ค้นหาเว็บไซต์

เกี่ยวกับโมดูลมานิเฟสต์


คำอธิบายสั้น ๆ

อธิบายการตั้งค่าและแนวทางปฏิบัติในการเขียนไฟล์รายการโมดูล

คำอธิบายยาว

รายการโมดูลคือไฟล์ข้อมูล PowerShell (.psd1) ที่มีตารางแฮช คู่คีย์-ค่าในตารางแฮชจะอธิบายเนื้อหาและคุณลักษณะของโมดูล กำหนดข้อกำหนดเบื้องต้น และควบคุมวิธีการประมวลผลส่วนประกอบ

รายการไม่จำเป็นต้องโหลดโมดูล แต่จำเป็นต้องเผยแพร่โมดูลไปยัง PowerShell Gallery นอกจากนี้ Manifests ยังช่วยให้คุณสามารถแยกการใช้งานโมดูลของคุณออกจากวิธีการโหลดได้ ด้วยรายการ คุณสามารถกำหนดข้อกำหนด ความเข้ากันได้ ลำดับการโหลด และอื่นๆ ได้

เมื่อคุณใช้ New-ModuleManifest โดยไม่ระบุพารามิเตอร์ใดๆ สำหรับการตั้งค่าของรายการ มันจะเขียนไฟล์รายการขั้นต่ำ ตัวอย่างด้านล่างแสดงเอาต์พุตเริ่มต้นนี้ โดยตัดคำอธิบายและการเว้นวรรคเพื่อความกระชับ:

@{
# RootModule = ''
ModuleVersion = '1.0'
# CompatiblePSEditions = @()
GUID = 'e7184b71-2527-469f-a50e-166b612dfb3b'
Author = 'username'
CompanyName = 'Unknown'
Copyright = '(c) 2022 username. All rights reserved.'
# Description = ''
# PowerShellVersion = ''
# PowerShellHostName = ''
# PowerShellHostVersion = ''
# DotNetFrameworkVersion = ''
# CLRVersion = ''
# ProcessorArchitecture = ''
# RequiredModules = @()
# RequiredAssemblies = @()
# ScriptsToProcess = @()
# TypesToProcess = @()
# FormatsToProcess = @()
# NestedModules = @()
FunctionsToExport = @()
CmdletsToExport = @()
VariablesToExport = '*'
AliasesToExport = @()
# DscResourcesToExport = @()
# ModuleList = @()
# FileList = @()
PrivateData = @{
    PSData = @{
        # Tags = @()
        # LicenseUri = ''
        # ProjectUri = ''
        # IconUri = ''
        # ReleaseNotes = ''
    } # End of PSData hashtable
} # End of PrivateData hashtable
# HelpInfoURI = ''
# DefaultCommandPrefix = ''
}

คุณสามารถใช้ Test-ModuleManifest เพื่อตรวจสอบรายการโมดูลก่อนที่คุณจะเผยแพร่โมดูลของคุณ Test-ModuleManifest ส่งคืนข้อผิดพลาดหากรายการไม่ถูกต้องหรือไม่สามารถนำเข้าโมดูลเข้าสู่เซสชันปัจจุบันได้ เนื่องจากเซสชันไม่ตรงตามข้อกำหนดที่ตั้งไว้ในรายการ

การใช้โค้ดสคริปต์ในรายการโมดูล

ค่าที่กำหนดการตั้งค่าในไฟล์ Manifest อาจเป็นนิพจน์ที่ได้รับการประเมินโดย PowerShell สิ่งนี้ช่วยให้คุณสร้างเส้นทางและกำหนดค่าตามเงื่อนไขตามตัวแปรได้

เมื่อคุณนำเข้าโมดูลโดยใช้ Import-Module รายการจะถูกประเมินในโหมดภาษา Restricted โหมด จำกัด จะจำกัดคำสั่งและตัวแปรที่สามารถใช้ได้

คำสั่งที่อนุญาต

    Import-LocalizedData
    ConvertFrom-StringData
    Write-Host
    Out-Host
    Join-Path

ตัวแปรที่อนุญาต

    $PSScriptRoot
    $PSEdition
    $EnabledExperimentalFeatures
  • ตัวแปรสภาพแวดล้อมใดๆ เช่น $ENV:TEMP

สำหรับข้อมูลเพิ่มเติม โปรดดู about_Language_Modes

การตั้งค่ารายการ

ส่วนต่อไปนี้ให้รายละเอียดการตั้งค่าทั้งหมดที่มีอยู่ในรายการโมดูลและวิธีการใช้งาน โดยเริ่มต้นด้วยบทสรุปของฉากนี้ และตามด้วยเมทริกซ์ที่แสดงรายการ:

  • ประเภทอินพุต: ประเภทออบเจ็กต์ที่คุณสามารถระบุสำหรับการตั้งค่านี้ในรายการ
  • จำเป็น: หากค่านี้เป็น ใช่ จำเป็นต้องมีการตั้งค่าทั้งเพื่อนำเข้าโมดูลและเผยแพร่ไปยัง PowerShell Gallery หากเป็น ไม่ ก็จำเป็นสำหรับทั้งสองอย่าง หากเป็น PowerShell Gallery จำเป็นสำหรับการเผยแพร่ไปยัง PowerShell Gallery เท่านั้น
  • ค่าหากไม่ได้ตั้งค่า: ค่าที่การตั้งค่านี้มีเมื่อนำเข้าและไม่ได้ตั้งค่าอย่างชัดเจน
  • ยอมรับไวด์การ์ด: การตั้งค่านี้สามารถรับค่าไวด์การ์ดได้หรือไม่

RootModule

การตั้งค่านี้ระบุไฟล์หลักหรือไฟล์รูทของโมดูล เมื่อนำเข้าโมดูล สมาชิกที่ส่งออกโดยไฟล์โมดูลรูทจะถูกนำเข้าเข้าสู่สถานะเซสชันของผู้เรียก

Input Type

<รหัส>System.String

Required

เลขที่

Value if unset

<รหัส>$null

Accepts wildcards

เลขที่

ค่าต้องเป็นเส้นทางไปยังรายการใดรายการหนึ่งต่อไปนี้:

  • สคริปต์ (.ps1)
  • โมดูลสคริปต์ (.psm1)
  • รายการโมดูล (.psd1)
  • แอสเซมบลี (.dll)
  • ไฟล์ XML คำจำกัดความ cmdlet (.cdxml)
  • เวิร์กโฟลว์ Windows PowerShell 5.1 (.xaml)

เส้นทางควรสัมพันธ์กับรายการโมดูล

หากรายการโมดูลไม่มีไฟล์รูทถูกกำหนดไว้ในคีย์ RootModule รายการนั้นจะกลายเป็นไฟล์หลักสำหรับโมดูล และโมดูลจะกลายเป็นโมดูลรายการ (ModuleType=Manifest) เมื่อกำหนด RootModule ประเภทของโมดูลจะถูกกำหนดจากนามสกุลไฟล์ที่ใช้:

  • ไฟล์ .ps1 หรือ .psm1 ทำให้โมดูลประเภท Script
  • ไฟล์ .psd1 ทำให้โมดูลเป็นประเภท Manifest
  • ไฟล์ .dll ทำให้โมดูลเป็นประเภท Binary
  • ไฟล์ .cdxml ทำให้โมดูลเป็นประเภท CIM
  • ไฟล์ .xaml ทำให้โมดูลเป็นประเภท เวิร์กโฟลว์

ตามค่าเริ่มต้น สมาชิกโมดูลทั้งหมดใน RootModule จะถูกส่งออก

คำแนะนำที่เป็นประโยชน์

ความเร็วในการโหลดโมดูลแตกต่างกันระหว่างประเภทโมดูล Binary, Script และ CIM สำหรับข้อมูลเพิ่มเติม โปรดดูข้อควรพิจารณาในการเขียนโมดูล PowerShell

ตัวอย่างเช่น ModuleType ของโมดูลนี้คือ Manifest สมาชิกโมดูลเดียวเท่านั้นที่โมดูลนี้สามารถส่งออกได้คือสมาชิกโมดูลที่กำหนดไว้ในโมดูลที่ระบุด้วยการตั้งค่า NestedModules

@{
    RootModule = ''
}

บันทึก

การตั้งค่านี้อาจระบุในรายการโมดูลเป็น ModuleToProcess แม้ว่าชื่อสำหรับการตั้งค่านี้จะถูกต้อง แต่แนวทางปฏิบัติที่ดีที่สุดคือใช้ RootModule แทน

ModuleVersion

การตั้งค่านี้ระบุเวอร์ชันของโมดูล เมื่อมีโมดูลหลายเวอร์ชันบนระบบ เวอร์ชันล่าสุดจะถูกโหลดตามค่าเริ่มต้นเมื่อคุณเรียกใช้ Import-Module

Input Type

<รหัส>System.String

Required

ใช่

Value if unset

None

Accepts wildcards

เลขที่

ค่าของการตั้งค่านี้จะต้องแปลงเป็น System.Version เมื่อคุณเรียกใช้ Import-Module

ตัวอย่างเช่น รายการนี้จะประกาศเวอร์ชันของโมดูลเป็น '1.2.3'

@{
    ModuleVersion = '1.2.3'
}

เมื่อคุณนำเข้าโมดูลและตรวจสอบคุณสมบัติ Version โปรดทราบว่าเป็นอ็อบเจ็กต์ System.Version ไม่ใช่สตริง:

$ExampleModule = Import-Module example.psd1
$ExampleModule.Version
$ExampleModule.Version.GetType().Name
Major  Minor  Build  Revision
-----  -----  -----  --------
1      2      3      -1

Version

เข้ากันได้PSEditions

การตั้งค่านี้ระบุ PSEditions ที่เข้ากันได้ของโมดูล

Input Type

<รหัส>System.String[]

Accepted Values

เดสก์ท็อป, Core

Required

เลขที่

Value if unset

<รหัส>$null

Accepts wildcards

เลขที่

หากค่าของการตั้งค่านี้เป็น $null จะสามารถนำเข้าโมดูลได้โดยไม่คำนึงถึง PSEdition ของเซสชัน คุณสามารถตั้งค่าเป็นค่าที่ยอมรับได้ตั้งแต่หนึ่งค่าขึ้นไป

สำหรับข้อมูลเกี่ยวกับ PSEdition โปรดดู:

  • เกี่ยวกับ_PowerShell_Editions
  • โมดูลที่มี PowerShell Editions ที่เข้ากันได้

เมื่อกำหนดการตั้งค่านี้ โมดูลจะนำเข้าได้เฉพาะในเซสชันที่รวมค่าของตัวแปรอัตโนมัติ $PSEdition ไว้ในการตั้งค่าเท่านั้น

บันทึก

เนื่องจากตัวแปรอัตโนมัติ $PSEdition ถูกนำมาใช้ในเวอร์ชัน 5.1 Windows PowerShell เวอร์ชันเก่าจึงไม่สามารถโหลดโมดูลที่ใช้การตั้งค่า CompatiblePSEditions ได้

ตัวอย่างเช่น คุณสามารถนำเข้ารายการโมดูลนี้ในเซสชันใดก็ได้:

@{
    # CompatiblePSEditions = @()
}

ด้วยการตั้งค่าที่ระบุ โมดูลนี้สามารถนำเข้าเฉพาะในเซสชันที่ค่าของตัวแปรอัตโนมัติ $PSEdition เป็น Core

@{
    CompatiblePSEditions = @('Core')
}

แนวทาง

การตั้งค่านี้ระบุตัวระบุเฉพาะสำหรับโมดูล GUID ใช้เพื่อแยกความแตกต่างระหว่างโมดูลที่มีชื่อเดียวกัน

Input Type

<รหัส>System.String

Required

เลขที่

Value if unset

<รหัส>00000000-0000-0000-0000-000000000000

Accepts wildcards

เลขที่

ค่าของการตั้งค่านี้จะต้องแปลงเป็น System.Guid เมื่อคุณเรียกใช้ Import-Module

คำเตือน

แม้ว่าจะไม่ใช่การตั้งค่าที่จำเป็น แต่การไม่ระบุ GUID ในรายการนั้นไม่มีประโยชน์และอาจทำให้ชื่อขัดแย้งกันสำหรับโมดูล

คุณสามารถสร้างแนวทางใหม่เพื่อใช้ในรายการของคุณได้:

New-Guid | Select-Object -ExpandProperty Guid
8456b025-2fa5-4034-ae47-e6305f3917ca
@{
    GUID = '8456b025-2fa5-4034-ae47-e6305f3917ca'
}

หากมีโมดูลอื่นในเครื่องที่มีชื่อเดียวกัน คุณยังคงสามารถนำเข้าโมดูลที่คุณต้องการได้โดยการระบุชื่อแบบเต็มของโมดูล:

Import-Module -FullyQualifiedName @{
    ModuleName    = 'Example'
    GUID          = '8456b025-2fa5-4034-ae47-e6305f3917ca'
    ModuleVersion = '1.0.0'
}

ผู้เขียน

การตั้งค่านี้ระบุผู้เขียนโมดูล

Input Type

<รหัส>System.String

Required

แกลเลอรี PowerShell

Value if unset

<รหัส>$null

Accepts wildcards

เลขที่

รายการนี้ประกาศว่าผู้เขียนโมดูลคือทีมประสบการณ์นักพัฒนา Contoso

@{
    Author = 'Contoso Developer Experience Team'
}

CompanyName

การตั้งค่านี้ระบุบริษัทหรือผู้จัดจำหน่ายที่สร้างโมดูล

Input Type

<รหัส>System.String

Required

เลขที่

Value if unset

<รหัส>$null

Accepts wildcards

เลขที่

รายการนี้ประกาศว่าโมดูลถูกสร้างขึ้นโดย Contoso, Ltd.

@{
    CompanyName = 'Contoso, Ltd.'
}

ลิขสิทธิ์

การตั้งค่านี้ระบุคำชี้แจงลิขสิทธิ์สำหรับโมดูล

Input Type

<รหัส>System.String

Required

เลขที่

Value if unset

<รหัส>$null

Accepts wildcards

เลขที่

รายการนี้จะประกาศคำชี้แจงลิขสิทธิ์ที่สงวนสิทธิ์ทั้งหมดให้กับ Contoso, Ltd. ณ ปี 2022

@{
    Copyright = '(c) 2022 Contoso, Ltd. All rights reserved.'
}

คำอธิบาย

การตั้งค่านี้อธิบายโมดูลในระดับสูง

Input Type

<รหัส>System.String

Required

แกลเลอรี PowerShell

Value if unset

<รหัส>$null

Accepts wildcards

เลขที่

รายการนี้มีคำอธิบายสั้นๆ คุณยังสามารถใช้สตริงที่นี่เพื่อเขียนคำอธิบายที่ยาวขึ้นหรือหลายบรรทัดได้

@{
    Description = 'Example commands to show a valid module manifest'
}

PowerShellเวอร์ชัน

การตั้งค่านี้ระบุเวอร์ชันขั้นต่ำของ PowerShell ที่โมดูลนี้ต้องการ

Input Type

<รหัส>System.String

Required

เลขที่

Value if unset

<รหัส>$null

Accepts wildcards

เลขที่

ค่าของการตั้งค่านี้จะต้องแปลงเป็น System.Version เมื่อคุณเรียกใช้ Import-Module

หากไม่ได้ตั้งค่าการตั้งค่านี้ PowerShell จะไม่จำกัดการนำเข้าโมดูลตามเวอร์ชันปัจจุบัน

ตัวอย่างเช่น รายการนี้จะประกาศว่าโมดูลเข้ากันได้กับ PowerShell และ Windows PowerShell ทุกรุ่น

@{
    # PowerShellVersion = ''
}

เมื่อตั้งค่า PowerShellVersion เป็น 7.2 คุณจะสามารถนำเข้าโมดูลใน PowerShell 7.2 หรือสูงกว่าได้เท่านั้น

@{
    PowerShellVersion = '7.2'
}

PowerShellHostName

การตั้งค่านี้ระบุชื่อของโปรแกรมโฮสต์ PowerShell ที่โมดูลต้องการ เช่น Windows PowerShell ISE Host หรือ ConsoleHost

Input Type

<รหัส>System.String

Required

เลขที่

Value if unset

<รหัส>$null

Accepts wildcards

เลขที่

คุณสามารถค้นหาชื่อโฮสต์สำหรับเซสชันได้ด้วยคำสั่ง $Host.Name ตัวอย่างเช่น คุณจะเห็นว่าโฮสต์สำหรับเซสชันระยะไกลคือ ServerRemoteHost แทนที่จะเป็น ConsoleHost:

$Host.Name
Enter-PSSession -ComputerName localhost
$Host.Name
ConsoleHost
[localhost]: PS C:\Users\username\Documents> $Host.Name
ServerRemoteHost

โมดูลนี้สามารถนำเข้าสู่โฮสต์ใดก็ได้

@{
    # PowerShellHostName = ''
}

เมื่อ PowerShellHostName ตั้งค่าเป็น ServerRemoteHost คุณสามารถนำเข้าโมดูลในเซสชัน PowerShell ระยะไกลเท่านั้น

@{
    PowerShellHostName = 'ServerRemoteHost'
}

PowerShellHostVersion

การตั้งค่านี้ระบุเวอร์ชันขั้นต่ำของโปรแกรมโฮสต์ PowerShell ที่โมดูลต้องการ

Input Type

<รหัส>System.String

Required

เลขที่

Value if unset

<รหัส>$null

Accepts wildcards

เลขที่

ค่าของการตั้งค่านี้จะต้องแปลงเป็น System.Version เมื่อคุณเรียกใช้ Import-Module

คำเตือน

แม้ว่าการตั้งค่านี้สามารถใช้ได้โดยไม่ต้องมีการตั้งค่า PowerShellHostName แต่ก็เพิ่มโอกาสที่จะเกิดพฤติกรรมที่ไม่คาดคิด ใช้การตั้งค่านี้เฉพาะเมื่อคุณใช้การตั้งค่า PowerShellHostName ด้วย

ตัวอย่างเช่น โมดูลของรายการนี้สามารถนำเข้าจากเซสชัน PowerShell ใดๆ ที่ทำงานใน ConsoleHost ไม่ว่าโฮสต์จะเป็นเวอร์ชันใดก็ตาม

@{
    PowerShellHostName = 'ConsoleHost'
    # PowerShellHostVersion = ''
}

เมื่อตั้งค่า PowerShellHostVersion เป็น 5.1 คุณจะสามารถนำเข้าโมดูลจากเซสชัน PowerShell ใดๆ ที่ทำงานอยู่ใน ConsoleHost โดยที่เวอร์ชันของโฮสต์คือ 5.1 หรือสูงกว่า

@{
    PowerShellHostName    = 'ConsoleHost'
    PowerShellHostVersion = '5.1'
}

DotNetFrameworkเวอร์ชัน

การตั้งค่านี้ระบุเวอร์ชันขั้นต่ำของ Microsoft .NET Framework ที่โมดูลต้องการ

Input Type

<รหัส>System.String

Required

เลขที่

Value if unset

<รหัส>$null

Accepts wildcards

เลขที่

บันทึก

การตั้งค่านี้ใช้ได้กับรุ่น PowerShell Desktop เท่านั้น เช่น Windows PowerShell 5.1 และใช้ได้กับ .NET Framework เวอร์ชันต่ำกว่า 4.5 เท่านั้น ข้อกำหนดนี้ไม่มีผลกับ PowerShell เวอร์ชันใหม่หรือ .NET Framework

ค่าของการตั้งค่านี้จะต้องแปลงเป็น System.Version เมื่อคุณเรียกใช้ Import-Module

ตัวอย่างเช่น รายการนี้จะประกาศว่าโมดูลสามารถนำเข้าในเซสชัน PowerShell หรือ Windows PowerShell ใดก็ได้ โดยไม่คำนึงถึงเวอร์ชันของ Microsoft .NET Framework

@{
    # DotNetFrameworkVersion = ''
}

เมื่อตั้งค่า DotNetFrameworkVersion เป็น 4.0 คุณสามารถนำเข้าโมดูลนี้ในเซสชันใดๆ ของ Windows PowerShell ที่ Microsoft .NET Framework เวอร์ชันล่าสุดที่มีอยู่อย่างน้อย 4.0 คุณยังสามารถนำเข้าข้อมูลดังกล่าวในเซสชัน PowerShell ใดก็ได้

@{
    DotNetFrameworkVersion = '4.0'
}

CLRเวอร์ชัน

การตั้งค่านี้ระบุเวอร์ชันขั้นต่ำของ Common Language Runtime (CLR) ของ Microsoft .NET Framework ที่โมดูลต้องการ

Input Type

<รหัส>System.String

Required

เลขที่

Value if unset

<รหัส>$null

Accepts wildcards

เลขที่

บันทึก

การตั้งค่านี้ใช้ได้กับรุ่น PowerShell Desktop เท่านั้น เช่น Windows PowerShell 5.1 และใช้ได้กับ .NET Framework เวอร์ชันต่ำกว่า 4.5 เท่านั้น ข้อกำหนดนี้ไม่มีผลกับ PowerShell เวอร์ชันใหม่หรือ .NET Framework

ค่าของการตั้งค่านี้จะต้องแปลงเป็น System.Version เมื่อคุณเรียกใช้ Import-Module

ตัวอย่างเช่น รายการนี้จะประกาศว่าโมดูลสามารถนำเข้าในเซสชัน PowerShell หรือ Windows PowerShell ใดก็ได้ โดยไม่คำนึงถึงเวอร์ชันของ CLR ของ Microsoft .NET Framework

@{
    # CLRVersion = ''
}

เมื่อตั้งค่า CLRVersion เป็น 4.0 คุณสามารถนำเข้าโมดูลนี้ในเซสชันใดๆ ของ Windows PowerShell โดยที่ CLR เวอร์ชันล่าสุดที่มีอยู่คืออย่างน้อย 4.0 คุณยังสามารถนำเข้าข้อมูลดังกล่าวในเซสชัน PowerShell ใดก็ได้

@{
    CLRVersion = '4.0'
}

ProcessorArchitecture

การตั้งค่านี้ระบุสถาปัตยกรรมตัวประมวลผลที่โมดูลต้องการ

Input Type

<รหัส>System.String

Accepted Values

<รหัส>ไม่มี, MSIL, X86, IA64, Amd64, Arm

Required

เลขที่

Value if unset

<รหัส>ไม่มี

Accepts wildcards

เลขที่

ค่าของการตั้งค่านี้จะต้องแปลงเป็น System.Reflection.ProcessorArchitecture เมื่อคุณเรียกใช้ Import-Module

ตัวอย่างเช่น รายการนี้จะประกาศว่าโมดูลสามารถนำเข้าในเซสชันใดก็ได้ โดยไม่คำนึงถึงสถาปัตยกรรมตัวประมวลผลของระบบ

@{
    # ProcessorArchitecture = ''
}

เมื่อตั้งค่า ProcessorArchitecture เป็น Amd64 คุณจะนำเข้าโมดูลนี้ได้เฉพาะในเซสชันที่ทำงานบนเครื่องที่มีสถาปัตยกรรมที่ตรงกันเท่านั้น

@{
    ProcessorArchitecture = 'Amd64'
}

RequiredModules

การตั้งค่านี้ระบุโมดูลที่ต้องอยู่ในสถานะเซสชันสากล หากโมดูลที่จำเป็นไม่อยู่ในสถานะเซสชันส่วนกลาง PowerShell จะนำเข้าโมดูลเหล่านั้น หากไม่มีโมดูลที่จำเป็น คำสั่ง Import-Module จะล้มเหลว

Input Type

System.String[], System.Collections.Hashtable[]

Required

เลขที่

Value if unset

<รหัส>$null

Accepts wildcards

เลขที่

รายการสำหรับการตั้งค่านี้อาจเป็นชื่อโมดูล ข้อมูลจำเพาะของโมดูลแบบเต็ม หรือเส้นทางไปยังไฟล์โมดูล

เมื่อค่าเป็นเส้นทาง เส้นทางสามารถมีคุณสมบัติครบถ้วนหรือสัมพันธ์กันได้

เมื่อค่าเป็นชื่อหรือข้อกำหนดเฉพาะของโมดูล PowerShell จะค้นหา PSModulePath สำหรับโมดูลที่ระบุ

ข้อมูลจำเพาะของโมดูลคือตารางแฮชที่มีคีย์ดังต่อไปนี้

  • ชื่อโมดูล - จำเป็น ระบุชื่อโมดูล
  • GUID - ไม่บังคับ ระบุ GUID ของโมดูล
  • นอกจากนี้ จำเป็น จะต้องระบุอย่างน้อยหนึ่งในสามคีย์ด้านล่าง คีย์ RequiredVersion ไม่สามารถใช้กับคีย์ ModuleVersion หรือ MaximumVersion คุณสามารถกำหนดช่วงเวอร์ชันที่ยอมรับได้สำหรับโมดูลโดยการระบุคีย์ ModuleVersion และ MaximumVersion ร่วมกัน

    • ModuleVersion - ระบุเวอร์ชันขั้นต่ำที่ยอมรับได้ของโมดูล
    • RequiredVersion - ระบุเวอร์ชันที่จำเป็นและแน่นอนของโมดูล
    • MaximumVersion - ระบุเวอร์ชันสูงสุดที่ยอมรับได้ของโมดูล

บันทึก

RequiredVersion ถูกเพิ่มใน Windows PowerShell 5.0 MaximumVersion ถูกเพิ่มใน Windows PowerShell 5.1

ตัวอย่างเช่น รายการนี้จะประกาศว่าโมดูลไม่ต้องใช้โมดูลอื่นใดในการทำงาน

@{
    # RequiredModules = @()
}

รายการนี้ประกาศว่าต้องใช้โมดูล PSReadLine เมื่อคุณเรียกใช้ Import-Module บนรายการนี้ PowerShell จะนำเข้า PSReadLine เวอร์ชันล่าสุดที่พร้อมใช้งานในเซสชัน หากไม่มีเวอร์ชัน การนำเข้าจะส่งกลับข้อผิดพลาด

@{
    RequiredModules = @(
        'PSReadLine'
    )
}

คำแนะนำที่เป็นประโยชน์

ใน PowerShell 2.0 นำเข้าโมดูล จะไม่นำเข้าโมดูลที่จำเป็นโดยอัตโนมัติ จะตรวจสอบว่าโมดูลที่จำเป็นอยู่ในสถานะเซสชันสากลเท่านั้น

รายการนี้ประกาศว่าจำเป็นต้องมีเวอร์ชันของโมดูล PSReadLine ที่จำหน่ายในโฟลเดอร์โมดูลของตัวเอง เมื่อคุณเรียกใช้ Import-Module บนรายการนี้ PowerShell จะนำเข้า PSReadLine ที่จำหน่ายจากเส้นทางที่ระบุ

@{
    RequiredModules = @(
        'Vendored\PSReadLine\PSReadLine.psd1'
    )
}

รายการนี้ประกาศว่าจำเป็นต้องใช้โมดูล PSReadLine เวอร์ชัน 2.0.0 โดยเฉพาะ เมื่อคุณเรียกใช้ Import-Module บนรายการนี้ PowerShell จะนำเข้า PSReadLine เวอร์ชัน 2.0.0 หากมีให้ใช้งาน ถ้าไม่พร้อมใช้งาน Import-Module จะส่งกลับข้อผิดพลาด

@{
    RequiredModules = @(
        @{
            ModuleName      = 'PSReadLine'
            RequiredVersion = '2.0.0'
        }
    )
}

รายการนี้ประกาศว่าจำเป็นต้องนำเข้าโมดูล PSReadLine เป็นเวอร์ชัน 2.0.0 หรือสูงกว่า

@{
    RequiredModules = @(
        @{
            ModuleName    = 'PSReadLine'
            ModuleVersion = '2.0.0'
        }
    )
}

รายการนี้ประกาศว่าจำเป็นต้องนำเข้าโมดูล PSReadLine เป็นเวอร์ชัน 2.0.0 หรือต่ำกว่า

@{
    RequiredModules = @(
        @{
            ModuleName     = 'PSReadLine'
            MaximumVersion = '2.0.0'
        }
    )
}

รายการนี้ประกาศว่าจำเป็นต้องนำเข้าโมดูล PSDesiredStateConfiguration ในเวอร์ชันเท่ากับหรือสูงกว่า 2.0.0 แต่ไม่สูงกว่า 2.99.99

@{
    RequiredModules = @(
        @{
            ModuleName     = 'PSDesiredStateConfiguration'
            ModuleVersion  = '2.0.0'
            MaximumVersion = '2.99.99'
        }
    )
}

RequiredAssemblies

การตั้งค่านี้ระบุไฟล์แอสเซมบลี (.dll) ที่โมดูลต้องการ PowerShell โหลดแอสเซมบลีที่ระบุก่อนที่จะอัปเดตประเภทหรือรูปแบบ การนำเข้าโมดูลที่ซ้อนกัน หรือการนำเข้าไฟล์โมดูลที่ระบุไว้ในค่าของคีย์ RootModule

Input Type

<รหัส>System.String[]

Required

เลขที่

Value if unset

<รหัส>$null

Accepts wildcards

เลขที่

รายการสำหรับการตั้งค่านี้อาจเป็นชื่อไฟล์ของแอสเซมบลีหรือเส้นทางไปยังแอสเซมบลี แสดงรายการแอสเซมบลีที่จำเป็นทั้งหมด แม้ว่าจะแสดงรายการเป็นโมดูลไบนารีในการตั้งค่า NestedModules ก็ตาม

รายการนี้จำเป็นต้องมีแอสเซมบลี example.dll ก่อนที่จะโหลดไฟล์การจัดรูปแบบหรือประเภทใดๆ ที่ระบุในรายการนี้ PowerShell จะโหลด example.dll จากโฟลเดอร์ Assemblies ที่อยู่ในไดเร็กทอรีเดียวกันกับรายการโมดูล

@{
    RequiredAssemblies = @(
        'Assemblies\Example.dll'
    )
}

สคริปต์ถึงกระบวนการ

การตั้งค่านี้จะระบุไฟล์สคริปต์ (.ps1) ที่ทำงานอยู่ในสถานะเซสชันของผู้เรียกเมื่อนำเข้าโมดูล คุณสามารถใช้สคริปต์เหล่านี้เพื่อเตรียมสภาพแวดล้อมได้ เช่นเดียวกับที่คุณใช้สคริปต์เข้าสู่ระบบ

Input Type

<รหัส>System.String[]

Required

เลขที่

Value if unset

<รหัส>$null

Accepts wildcards

เลขที่

หากต้องการระบุสคริปต์ที่ทำงานในสถานะเซสชันของโมดูล ให้ใช้คีย์ NestedModules

เมื่อคุณนำเข้ารายการนี้ PowerShell จะเรียกใช้ Initialize.ps1 ในเซสชันปัจจุบันของคุณ

@{
    ScriptsToProcess = @(
        'Scripts\Initialize.ps1'
    )
}

ตัวอย่างเช่น หาก Initialize.ps1 เขียนข้อความที่ให้ข้อมูลและตั้งค่าตัวแปร $ExampleState:

if ([string]::IsNullOrEmpty($ExampleState)) {
    Write-Information "Example not initialized."
    Write-Information "Initializing now..."
    $ExampleState = 'Initialized'
} else {
    Write-Information "Example already initialized."
}

เมื่อคุณนำเข้าโมดูล สคริปต์จะทำงาน โดยเขียนข้อความเหล่านั้นและตั้งค่า $ExampleState ในเซสชันของคุณ

$InformationPreference = 'Continue'
"Example State is: $ExampleState"
Import-Module .\example7x.psd1
"Example State is: $ExampleState"
Import-Module .\example7x.psd1 -Force
Example State is:

Example not initialized.
Initializing now...

Example State is: Initialized

Example already initialized.

ประเภทกระบวนการ

การตั้งค่านี้จะระบุประเภทไฟล์ (.ps1xml) ที่ทำงานเมื่อมีการนำเข้าโมดูล

Input Type

<รหัส>System.String[]

Required

เลขที่

Value if unset

<รหัส>$null

Accepts wildcards

เลขที่

เมื่อคุณนำเข้าโมดูล PowerShell จะรัน cmdlet Update-TypeData พร้อมกับไฟล์ที่ระบุ เนื่องจากไฟล์ประเภทไม่ได้กำหนดขอบเขต จึงส่งผลต่อสถานะเซสชันทั้งหมดในเซสชัน

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับไฟล์ประเภท โปรดดูที่ about_Types.ps1xml

ตัวอย่างเช่น เมื่อคุณนำเข้ารายการนี้ PowerShell จะโหลดประเภทที่ระบุในไฟล์ Example.ps1xml จากโฟลเดอร์ ประเภท ที่อยู่ในไดเร็กทอรีเดียวกันกับรายการโมดูล

@{
    TypesToProcess = @(
        'Types\Example.ps1xml'
    )
}

รูปแบบเพื่อกระบวนการ

การตั้งค่านี้ระบุไฟล์การจัดรูปแบบ (.ps1xml) ที่ทำงานเมื่อมีการนำเข้าโมดูล

Input Type

<รหัส>System.String[]

Required

เลขที่

Value if unset

<รหัส>$null

Accepts wildcards

เลขที่

เมื่อคุณนำเข้าโมดูล PowerShell จะเรียกใช้ cmdlet Update-FormatData พร้อมกับไฟล์ที่ระบุ เนื่องจากการจัดรูปแบบไฟล์ไม่ได้จำกัดขอบเขต จึงส่งผลต่อสถานะเซสชันทั้งหมดในเซสชัน

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับประเภทไฟล์ โปรดดูที่ about_Format.ps1xml

ตัวอย่างเช่น เมื่อคุณนำเข้าโมดูลนี้ PowerShell จะโหลดรูปแบบที่ระบุในไฟล์ Example.ps1xml จากโฟลเดอร์ Formats ที่อยู่ในไดเร็กทอรีเดียวกันกับรายการโมดูล

@{
    FormatsToProcess = @(
        'Formats\Example.ps1xml'
    )
}

NestedModules

การตั้งค่านี้ระบุโมดูลสคริปต์ (.psm1) และโมดูลไบนารี (.dll) ที่นำเข้าเข้าสู่สถานะเซสชันของโมดูล คุณยังสามารถระบุไฟล์สคริปต์ (.ps1) ไฟล์ในการตั้งค่านี้ทำงานตามลำดับที่แสดงไว้

Input Type

System.String[], System.Collections.Hashtable[]

Required

เลขที่

Value if unset

<รหัส>$null

Accepts wildcards

เลขที่

รายการสำหรับการตั้งค่านี้อาจเป็นชื่อโมดูล ข้อมูลจำเพาะของโมดูลแบบเต็ม หรือเส้นทางไปยังโมดูลหรือไฟล์สคริปต์

เมื่อค่าเป็นเส้นทาง เส้นทางสามารถมีคุณสมบัติครบถ้วนหรือสัมพันธ์กันได้

เมื่อค่าเป็นชื่อโมดูลหรือข้อกำหนด PowerShell จะค้นหา PSModulePath สำหรับโมดูลที่ระบุ

ข้อมูลจำเพาะของโมดูลคือตารางแฮชที่มีคีย์ดังต่อไปนี้

  • ชื่อโมดูล - จำเป็น ระบุชื่อโมดูล
  • GUID - ไม่บังคับ ระบุ GUID ของโมดูล
  • นอกจากนี้ จำเป็น จะต้องระบุอย่างน้อยหนึ่งในสามคีย์ด้านล่าง คีย์ RequiredVersion ไม่สามารถใช้กับคีย์ ModuleVersion หรือ MaximumVersion คุณสามารถกำหนดช่วงเวอร์ชันที่ยอมรับได้สำหรับโมดูลโดยการระบุคีย์ ModuleVersion และ MaximumVersion ร่วมกัน

    • ModuleVersion - ระบุเวอร์ชันขั้นต่ำที่ยอมรับได้ของโมดูล
    • RequiredVersion - ระบุเวอร์ชันที่จำเป็นและแน่นอนของโมดูล
    • MaximumVersion - ระบุเวอร์ชันสูงสุดที่ยอมรับได้ของโมดูล

บันทึก

RequiredVersion ถูกเพิ่มใน Windows PowerShell 5.0 MaximumVersion ถูกเพิ่มใน Windows PowerShell 5.1

รายการใดๆ ที่จำเป็นต้องส่งออกจากโมดูลที่ซ้อนกันจะต้องถูกส่งออกโดยโมดูลที่ซ้อนกันโดยใช้ Export-ModuleMember cmdlet หรือแสดงอยู่ในคุณสมบัติการส่งออกอย่างใดอย่างหนึ่ง:

  • ฟังก์ชันในการส่งออก
  • CmdletsToExport
  • ตัวแปรที่จะส่งออก
  • นามแฝงเพื่อส่งออก

โมดูลที่ซ้อนกันในสถานะเซสชันของโมดูลจะพร้อมใช้งานสำหรับโมดูลรูท แต่จะไม่ส่งคืนโดยคำสั่ง Get-Module ในสถานะเซสชันของผู้เรียก

สคริปต์ (.ps1) ที่อยู่ในการตั้งค่านี้จะทำงานในสถานะเซสชันของโมดูล ไม่ใช่ในสถานะเซสชันของผู้เรียก หากต้องการเรียกใช้สคริปต์ในสถานะเซสชันของผู้เรียก ให้ระบุชื่อไฟล์สคริปต์ในการตั้งค่า ScriptsToProcess

ตัวอย่างเช่น เมื่อคุณนำเข้ารายการนี้ โมดูล Helpers.psm1 จะถูกโหลดเข้าสู่สถานะเซสชันของโมดูลรูท cmdlet ใดๆ ที่ประกาศในโมดูลที่ซ้อนกันจะถูกส่งออก เว้นแต่จะถูกจำกัดเป็นอย่างอื่น

@{
    NestedModules = @(
        'Helpers\Helpers.psm1'
    )
}

ฟังก์ชั่นการส่งออก

การตั้งค่านี้ระบุฟังก์ชันที่โมดูลส่งออก คุณสามารถใช้การตั้งค่านี้เพื่อจำกัดฟังก์ชันที่ส่งออกโดยโมดูล สามารถลบฟังก์ชันออกจากรายการฟังก์ชันที่ส่งออกได้ แต่ไม่สามารถเพิ่มฟังก์ชันลงในรายการได้

Input Type

<รหัส>System.String[]

Required

เลขที่

Value if unset

<รหัส>$null

Accepts wildcards

ใช่

คุณสามารถระบุรายการในการตั้งค่านี้ด้วยไวด์การ์ด ฟังก์ชันที่ตรงกันทั้งหมดในรายการฟังก์ชันที่ส่งออกจะถูกส่งออก

คำแนะนำที่เป็นประโยชน์

เพื่อประสิทธิภาพและความสามารถในการค้นพบ คุณควรแสดงรายการฟังก์ชันที่คุณต้องการให้โมดูลส่งออกอย่างชัดเจนเสมอในการตั้งค่านี้โดยไม่ต้องใช้ไวด์การ์ดใดๆ

ตัวอย่างเช่น เมื่อคุณนำเข้าโมดูลโดยใส่เครื่องหมายหมายเหตุการตั้งค่าไว้ ฟังก์ชันทั้งหมดในโมดูลรูทและโมดูลที่ซ้อนกันใดๆ จะถูกส่งออก

@{
    # FunctionsToExport = @()
}

รายการนี้มีฟังก์ชันการทำงานเหมือนกันกับการไม่ได้ระบุการตั้งค่าเลย

@{
    FunctionsToExport = '*'
}

เมื่อตั้งค่า FunctionsToExport เป็นอาร์เรย์ว่าง เมื่อคุณนำเข้าโมดูลนี้ จะไม่มีฟังก์ชันใดที่โมดูลรากหรือการส่งออกโมดูลที่ซ้อนกันใดๆ จะใช้งานได้

@{
    FunctionsToExport = @()
}

บันทึก

หากคุณสร้างรายการโมดูลของคุณด้วยคำสั่ง New-ModuleManifest และไม่ได้ระบุพารามิเตอร์ FunctionsToExport รายการที่สร้างขึ้นจะมีการตั้งค่านี้ระบุเป็นอาร์เรย์ว่าง ยกเว้นในกรณีที่คุณแก้ไขรายการ จะไม่มีการส่งออกฟังก์ชันจากโมดูล

เมื่อ FunctionsToExport ตั้งค่าให้รวมเฉพาะฟังก์ชัน Get-Example เมื่อคุณนำเข้าโมดูลนี้ เฉพาะฟังก์ชัน Get-Example เท่านั้นที่จะใช้งานได้ แม้ว่า ฟังก์ชันอื่นๆ ถูกส่งออกโดยโมดูลรูทหรือโมดูลที่ซ้อนกันใดๆ

@{
    FunctionsToExport = @(
        'Get-Example'
    )
}

ด้วยการตั้งค่า FunctionsToExport ด้วยสตริงไวด์การ์ด เมื่อคุณนำเข้าโมดูลนี้ ฟังก์ชั่นใดๆ ที่มีชื่อลงท้ายด้วย ตัวอย่าง จะพร้อมใช้งาน แม้ว่าฟังก์ชันอื่นๆ จะถูกส่งออกเป็นสมาชิกโมดูลโดยรูท โมดูลหรือโมดูลที่ซ้อนกันใด ๆ

@{
    FunctionsToExport = @(
        '*Example'
    )
}

CmdletsToExport

การตั้งค่านี้ระบุ cmdlet ของโมดูลที่ส่งออก คุณสามารถใช้การตั้งค่านี้เพื่อจำกัด cmdlets ที่ส่งออกโดยโมดูล สามารถลบ cmdlets ออกจากรายการสมาชิกโมดูลที่ส่งออกได้ แต่ไม่สามารถเพิ่ม cmdlets ลงในรายการได้

Input Type

<รหัส>System.String[]

Required

เลขที่

Value if unset

<รหัส>$null

Accepts wildcards

ใช่

คุณสามารถระบุรายการในการตั้งค่านี้ด้วยไวด์การ์ด cmdlet ที่ตรงกันทั้งหมดในรายการ cmdlets ที่ส่งออกจะถูกส่งออก

คำแนะนำที่เป็นประโยชน์

เพื่อประสิทธิภาพและความสามารถในการค้นพบ คุณควรแสดงรายการ cmdlets ที่คุณต้องการให้โมดูลส่งออกอย่างชัดเจนเสมอในการตั้งค่านี้โดยไม่ต้องใช้ไวด์การ์ดใดๆ

ตัวอย่างเช่น เมื่อคุณนำเข้าโมดูลที่มีการตั้งค่านี้ใส่เครื่องหมายความคิดเห็นไว้ cmdlets ทั้งหมดในโมดูลรูทและโมดูลที่ซ้อนกันใดๆ จะถูกส่งออก

@{
    # CmdletsToExport = @()
}

รายการนี้มีฟังก์ชันการทำงานเหมือนกันกับการไม่ได้ระบุการตั้งค่าเลย

@{
    CmdletsToExport = '*'
}

เมื่อ CmdletsToExport ตั้งค่าเป็นอาร์เรย์ว่าง เมื่อคุณนำเข้าโมดูลนี้ จะไม่มี cmdlets ใดที่โมดูลรูทหรือการส่งออกโมดูลที่ซ้อนกันใดๆ จะพร้อมใช้งาน

@{
    CmdletsToExport = @()
}

บันทึก

หากคุณสร้างรายการโมดูลของคุณด้วยคำสั่ง New-ModuleManifest และไม่ได้ระบุพารามิเตอร์ CmdletsToExport รายการที่สร้างขึ้นจะมีการตั้งค่านี้ระบุเป็นอาร์เรย์ว่าง ยกเว้นกรณีที่คุณแก้ไขรายการ จะไม่มีการส่งออก cmdlets จากโมดูล

เมื่อ CmdletsToExport ตั้งค่าให้รวมเฉพาะ Get-Example cmdlet เมื่อคุณนำเข้าโมดูลนี้ เฉพาะ cmdlet Get-Example เท่านั้นที่จะใช้งานได้ แม้ว่า cmdlet อื่นๆ ถูกส่งออกโดยโมดูลรูทหรือโมดูลที่ซ้อนกันใดๆ

@{
    CmdletsToExport = @(
        'Get-Example'
    )
}

ด้วยการตั้งค่า CmdletsToExport ด้วยสตริงตัวแทน เมื่อคุณนำเข้าโมดูลนี้ cmdlet ใดๆ ที่มีชื่อลงท้ายด้วย ตัวอย่าง จะพร้อมใช้งาน แม้ว่า cmdlet อื่นๆ จะถูกส่งออกเป็นสมาชิกโมดูลโดยรูท โมดูลหรือโมดูลที่ซ้อนกันใด ๆ

@{
    CmdletsToExport = @(
        '*Example'
    )
}

ตัวแปรที่จะส่งออก

การตั้งค่านี้ระบุตัวแปรที่โมดูลส่งออก คุณสามารถใช้การตั้งค่านี้เพื่อจำกัดตัวแปรที่ส่งออกโดยโมดูล สามารถลบตัวแปรออกจากรายการสมาชิกโมดูลที่ส่งออกได้ แต่ไม่สามารถเพิ่มตัวแปรลงในรายการได้

Input Type

<รหัส>System.String[]

Required

เลขที่

Value if unset

<รหัส>$null

Accepts wildcards

ใช่

คุณสามารถระบุรายการในการตั้งค่านี้ด้วยไวด์การ์ด ตัวแปรที่ตรงกันทั้งหมดในรายการสมาชิกโมดูลที่ส่งออกจะถูกส่งออก

คำแนะนำที่เป็นประโยชน์

เพื่อประสิทธิภาพและความสามารถในการค้นพบ คุณควรแสดงรายการตัวแปรที่คุณต้องการให้โมดูลส่งออกอย่างชัดเจนเสมอในการตั้งค่านี้โดยไม่ต้องใช้ไวด์การ์ดใดๆ

ตัวอย่างเช่น เมื่อคุณนำเข้าโมดูลโดยใส่เครื่องหมายความคิดเห็นไว้ ตัวแปรทั้งหมดในโมดูลรูทและโมดูลที่ซ้อนกันใดๆ จะถูกส่งออก

@{
    # VariablesToExport = @()
}

รายการนี้มีฟังก์ชันการทำงานเหมือนกันกับการไม่ได้ระบุการตั้งค่าเลย

@{
    VariablesToExport = '*'
}

บันทึก

หากคุณสร้างรายการโมดูลของคุณด้วยคำสั่ง New-ModuleManifest และไม่ได้ระบุพารามิเตอร์ VariablesToExport รายการที่สร้างขึ้นจะมีการตั้งค่านี้ระบุเป็น '*'. ยกเว้นในกรณีที่คุณแก้ไขรายการ ตัวแปรทั้งหมดจากโมดูลจะถูกส่งออก

เมื่อตั้งค่า VariablesToExport เป็นอาร์เรย์ว่าง เมื่อคุณนำเข้าโมดูลนี้ จะไม่มีตัวแปรใดที่โมดูลรูทหรือการส่งออกโมดูลที่ซ้อนกันใดๆ จะพร้อมใช้งาน

@{
    VariablesToExport = @()
}

เมื่อ VariablesToExport ตั้งค่าให้รวมเฉพาะตัวแปร SomeExample เมื่อคุณนำเข้าโมดูลนี้ จะมีเพียงตัวแปร $SomeExample เท่านั้นที่สามารถใช้งานได้ แม้ว่าตัวแปรอื่น ๆ ส่งออกโดยโมดูลรูทหรือโมดูลที่ซ้อนกันใดๆ

@{
    VariablesToExport = @(
        'SomeExample'
    )
}

ด้วยการตั้งค่า VariablesToExport ด้วยสตริงไวด์การ์ด เมื่อคุณนำเข้าโมดูลนี้ ตัวแปรใดๆ ที่มีชื่อลงท้ายด้วย ตัวอย่าง จะพร้อมใช้งาน แม้ว่าตัวแปรอื่นๆ จะถูกส่งออกเป็นสมาชิกโมดูลโดยรูท โมดูลหรือโมดูลที่ซ้อนกันใด ๆ

@{
    VariablesToExport = @(
        '*Example'
    )
}

DscResourcesToExport

การตั้งค่านี้ระบุทรัพยากร DSC ที่โมดูลส่งออก คุณสามารถใช้การตั้งค่านี้เพื่อจำกัดทรัพยากร DSC ตามคลาสที่ส่งออกโดยโมดูล สามารถลบทรัพยากร DSC ออกจากรายการสมาชิกโมดูลที่ส่งออกได้ แต่ไม่สามารถเพิ่มทรัพยากร DSC ลงในรายการได้

Input Type

<รหัส>System.String[]

Required

เลขที่

Value if unset

<รหัส>$null

Accepts wildcards

ใช่

คุณสามารถระบุรายการในการตั้งค่านี้ด้วยไวด์การ์ด ทรัพยากร DSC ตามคลาสที่ตรงกันทั้งหมดในโมดูลจะถูกส่งออก

คำแนะนำที่เป็นประโยชน์

เพื่อให้ค้นพบได้ คุณควรแสดงรายการทรัพยากร DSC ทั้งหมดที่โมดูลของคุณส่งออกอย่างชัดเจนเสมอ

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการเขียนและการใช้ทรัพยากร DSC โปรดดูเอกสารประกอบสำหรับ DSC

รายการนี้จะส่งออกทรัพยากร DSC แบบอิงคลาสและแบบ MOF ทั้งหมดที่กำหนดไว้ในโมดูลรูทและโมดูลที่ซ้อนกันใดๆ

@{
    # DscResourcesToExport = @()
}

รายการนี้จะส่งออกทรัพยากร DSC ที่ใช้ MOF ทั้งหมดที่กำหนดไว้ในโมดูลรูทและโมดูลที่ซ้อนกันใดๆ แต่จะมีเพียงทรัพยากร DSC ตามคลาสเดียวเท่านั้น ExampleClassResource

@{
    DscResourcesToExport = @(
        'ExampleClassResource'
    )
}

รายการนี้จะส่งออกทรัพยากร DSC ทั้งหมดที่มี แม้ว่าทรัพยากรที่ใช้ MOF จะไม่อยู่ในรายการ โมดูลจะยังคงส่งออก

@{
    DscResourcesToExport = @(
        'ExampleClassResource'
        'ExampleMofResourceFirst'
    )
}

ModuleList

การตั้งค่านี้เป็นรายการสินค้าคงคลังที่ให้ข้อมูลของโมดูลที่รวมอยู่ในรายการนี้ รายการนี้ไม่ส่งผลต่อพฤติกรรมของโมดูล

Input Type

System.String[], System.Collections.Hashtable[]

Required

เลขที่

Value if unset

<รหัส>$null

Accepts wildcards

เลขที่

รายการสำหรับการตั้งค่านี้อาจเป็นชื่อโมดูล ข้อมูลจำเพาะของโมดูลแบบเต็ม หรือเส้นทางไปยังโมดูลหรือไฟล์สคริปต์

เมื่อค่าเป็นเส้นทาง เส้นทางสามารถมีคุณสมบัติครบถ้วนหรือสัมพันธ์กันได้

เมื่อค่าเป็นชื่อโมดูลหรือข้อกำหนด PowerShell จะค้นหา PSModulePath สำหรับโมดูลที่ระบุ

ข้อมูลจำเพาะของโมดูลคือตารางแฮชที่มีคีย์ดังต่อไปนี้

  • ชื่อโมดูล - จำเป็น ระบุชื่อโมดูล
  • GUID - ไม่บังคับ ระบุ GUID ของโมดูล
  • นอกจากนี้ จำเป็น จะต้องระบุอย่างน้อยหนึ่งในสามคีย์ด้านล่าง คีย์ RequiredVersion ไม่สามารถใช้กับคีย์ ModuleVersion หรือ MaximumVersion คุณสามารถกำหนดช่วงเวอร์ชันที่ยอมรับได้สำหรับโมดูลโดยการระบุคีย์ ModuleVersion และ MaximumVersion ร่วมกัน

    • ModuleVersion - ระบุเวอร์ชันขั้นต่ำที่ยอมรับได้ของโมดูล
    • RequiredVersion - ระบุเวอร์ชันที่จำเป็นและแน่นอนของโมดูล
    • MaximumVersion - ระบุเวอร์ชันสูงสุดที่ยอมรับได้ของโมดูล

บันทึก

RequiredVersion ถูกเพิ่มใน Windows PowerShell 5.0 MaximumVersion ถูกเพิ่มใน Windows PowerShell 5.1

รายการนี้ไม่ได้ให้รายการข้อมูลของโมดูลที่รวมไว้ อาจมีหรือไม่มีโมดูลก็ได้ แม้ว่าไม่ได้ระบุการตั้งค่านี้ แต่โมดูลใดๆ ที่อยู่ในการตั้งค่า RootModule, ScriptsToProcess หรือ NestedModules ยังคงทำงานตามปกติ

@{
    # ModuleList = @()
}

รายการนี้จะประกาศว่าโมดูลเดียวที่รวมไว้คือ Example.psm1 และโมดูลย่อย First.psm1 และ Second.psm1 ใน Submodules โฟลเดอร์

@{
    ModuleList = @(
        'Example.psm1'
        'Submodules\First.psm1'
        'Submodules\Second.psm1'
    )
}

FileList

การตั้งค่านี้เป็นรายการสินค้าคงคลังที่ให้ข้อมูลของไฟล์ที่รวมอยู่ในโมดูลนี้ รายการนี้ไม่ส่งผลต่อพฤติกรรมของโมดูล

Input Type

<รหัส>System.String[]

Required

เลขที่

Value if unset

<รหัส>$null

Accepts wildcards

ใช่

รายการสำหรับการตั้งค่านี้ควรเป็นเส้นทางสัมพันธ์ไปยังไฟล์จากโฟลเดอร์ที่มีรายการโมดูล

เมื่อผู้ใช้เรียก Get-Module กับรายการที่มีการตั้งค่านี้กำหนดไว้ คุณสมบัติ FileList จะมีเส้นทางแบบเต็มไปยังไฟล์เหล่านี้ โดยเชื่อมเส้นทางของโมดูลเข้ากับเส้นทางสัมพันธ์ของแต่ละรายการ

ไฟล์ Manifest นี้ไม่รวมรายการไฟล์

@{
    # FileList = @()
}

ไฟล์ Manifest นี้ประกาศว่ามีเพียงไฟล์เดียวเท่านั้นที่รวมไว้ในรายการการตั้งค่านี้

@{
    FileList = @(
        'Example.psd1'
        'Example.psm1'
        'Assemblies\Example.dll'
        'Scripts\Initialize.ps1'
        'Submodules\First.psm1'
        'Submodules\Second.psm1'
    )
}

PrivateData

การตั้งค่านี้จะกำหนดตารางแฮชของข้อมูลที่พร้อมใช้งานสำหรับคำสั่งหรือฟังก์ชันใดๆ ในขอบเขตของโมดูลรูท

Input Type

<รหัส>System.Collections.Hashtable

Required

แกลเลอรี PowerShell, Crescendo

Value if unset

<รหัส>$null

Accepts wildcards

เลขที่

เมื่อคุณส่งออกรายการ Crescendo เพื่อสร้างโมดูลใหม่ Export-CrescendoModule จะเพิ่มสองคีย์ใน PrivateData

  • CrescendoGenerated - การประทับเวลาเมื่อมีการส่งออกโมดูล
  • CrescendoVersion - เวอร์ชันของ Crescendo ที่ใช้ในการส่งออกโมดูล

คุณสามารถเพิ่มคีย์ของคุณเองเพื่อเก็บข้อมูลเมตาที่คุณต้องการติดตามได้ คีย์ใดๆ ที่เพิ่มในการตั้งค่านี้จะใช้ได้กับฟังก์ชันและ cmdlets ในโมดูลรูทโดยใช้ $MyInvocation.MyCommand.Module.PrivateData ตารางแฮชไม่พร้อมใช้งานในขอบเขตของโมดูล เฉพาะใน cmdlets ที่คุณกำหนดในโมดูลเท่านั้น

ตัวอย่างเช่น รายการนี้จะกำหนดคีย์ PublishedDate ใน PrivateData

@{
    PrivateData = @{
        PublishedDate = '2022-06-01'
    }
}

Cmdlet ในโมดูลสามารถเข้าถึงค่านี้ได้ด้วยตัวแปร $MyInvocation

Function Get-Stale {
    [CmdletBinding()]
    param()

    $PublishedDate = $MyInvocation.MyCommand.Module.PrivateData.PublishedDate
    $CurrentDate = Get-Date

    try {
        $PublishedDate = Get-Date -Date $PublishedDate -ErrorAction Stop
    } catch {
        # The date was set in the manifest, set to an invalid value, or
        # the script module was directly imported without the manifest.
        Throw "Unable to determine published date. Check the module manifest."
    }

    if ($CurrentDate -gt $PublishedDate.AddDays(30)) {
        Write-Warning "This module version was published more than 30 days ago."
    } else {
        $TimeUntilStale = $PublishedDate.AddDays(30) - $CurrentDate
        "This module will be stale in $($TimeUntilStale.Days) days"
    }
}

เมื่อนำเข้าโมดูลแล้ว ฟังก์ชันจะใช้ค่าจาก PrivateData เพื่อกำหนดว่าโมดูลจะเผยแพร่เมื่อใด

Get-Stale -TestDate '2022-06-15'
Get-Stale -TestDate '2022-08-01'
This module will be stale in 16 days

WARNING: This module version was published more than 30 days ago.

PrivateData.PSData

คุณสมบัติย่อย PSData กำหนดตารางแฮชของค่าที่รองรับสถานการณ์ส่วนขยายเฉพาะ

Input Type

<รหัส>System.Collections.Hashtable

Required

แกลเลอรี PowerShell คุณลักษณะการทดลอง โมดูล Crescendo

Value if unset

<รหัส>$null

Accepts wildcards

เลขที่

คุณสมบัติย่อย PSData ใช้สำหรับสถานการณ์ต่อไปนี้:

  • แกลเลอรี PowerShell - เมื่อคุณสร้างรายการโมดูลโดยใช้ New-ModuleManifest cmdlet จะเติมข้อมูลแฮช PSData ล่วงหน้าด้วยคีย์ตัวยึดตำแหน่งที่จำเป็นเมื่อเผยแพร่โมดูลไปยัง PowerShell Gallery สำหรับข้อมูลเพิ่มเติมเกี่ยวกับรายการโมดูลและการเผยแพร่ไปยังแกลเลอรี PowerShell โปรดดูค่ารายการแพ็คเกจที่ส่งผลกระทบต่อ UI แกลเลอรี PowerShell
  • คุณลักษณะทดลอง - ข้อมูลเมตาเกี่ยวกับคุณลักษณะทดลองจะถูกเก็บไว้ในคุณสมบัติ ExperimentalFeatures ของ PSData คุณสมบัติ ExperimentalFeatures คืออาร์เรย์ของแฮชเทเบิลที่มีชื่อและคำอธิบายของคุณสมบัติ สำหรับข้อมูลเพิ่มเติม โปรดดูการประกาศคุณลักษณะทดลองในโมดูล
  • โมดูล Crescendo - เมื่อคุณส่งออกรายการ Crescendo เพื่อสร้างโมดูลใหม่ Export-CrescendoModule จะเพิ่มค่า CrescendoBuilt ให้กับคุณสมบัติ PSData.Tags คุณสามารถใช้แท็กนี้เพื่อค้นหาโมดูลในแกลเลอรี PowerShell ที่สร้างขึ้นโดยใช้ Crescendo สำหรับข้อมูลเพิ่มเติม โปรดดูที่ Export-CrescendoModule

ช่วยเหลือInfoURI

การตั้งค่านี้ระบุที่อยู่อินเทอร์เน็ตของไฟล์ HelpInfo XML สำหรับโมดูล

Input Type

<รหัส>System.String

Required

เลขที่

Value if unset

<รหัส>$null

Accepts wildcards

เลขที่

ค่าของการตั้งค่านี้ต้องเป็น Uniform Resource Identifier (URI) ที่ขึ้นต้นด้วย http หรือ https

ไฟล์ HelpInfo XML รองรับคุณลักษณะวิธีใช้ที่สามารถอัปเดตได้ซึ่งถูกนำมาใช้ใน PowerShell 3.0 ประกอบด้วยข้อมูลเกี่ยวกับตำแหน่งของไฟล์วิธีใช้ที่ดาวน์โหลดได้สำหรับโมดูลและหมายเลขเวอร์ชันของไฟล์วิธีใช้ใหม่ล่าสุดสำหรับแต่ละสถานที่ที่รองรับ

สำหรับข้อมูลเกี่ยวกับวิธีใช้ที่สามารถอัปเดตได้ โปรดดู about_Updatable_Help สำหรับข้อมูลเกี่ยวกับไฟล์ HelpInfo XML โปรดดูที่การสนับสนุนวิธีใช้ที่อัปเดตได้

ตัวอย่างเช่น โมดูลนี้รองรับวิธีใช้ที่อัปเดตได้

@{
    HelpInfoUri = 'http://https://go.microsoft.com/fwlink/?LinkID=603'
}

DefaultCommandPrefix

การตั้งค่านี้ระบุคำนำหน้าคำนามของคำสั่งทั้งหมดในโมดูลเมื่อนำเข้าสู่เซสชัน คำนำหน้าช่วยป้องกันความขัดแย้งของชื่อคำสั่งในเซสชันของผู้ใช้

Input Type

<รหัส>System.String

Required

เลขที่

Value if unset

<รหัส>$null

Accepts wildcards

เลขที่

ผู้ใช้โมดูลสามารถแทนที่คำนำหน้านี้ได้โดยการระบุพารามิเตอร์ คำนำหน้า ของ Import-Module cmdlet

การตั้งค่านี้ถูกนำมาใช้ใน PowerShell 3.0

เมื่อนำเข้ารายการนี้ cmdlet ใดๆ ที่นำเข้าจากโมดูลนี้จะมี ตัวอย่าง นำหน้าคำนามในชื่อ ตัวอย่างเช่น Get-Item จะถูกนำเข้าเป็น Get-ExampleItem

@{
    DefaultCommandPrefix = 'Example'
}

ดูเพิ่มเติม

  • เกี่ยวกับ_PowerShell_Editions
  • New-ModuleManifest
  • Test-ModuleManifest
  • โมดูลที่มี PowerShell Editions ที่เข้ากันได้
  • ค่ารายการแพ็คเกจที่ส่งผลกระทบต่อ PowerShell Gallery UI
  • ข้อควรพิจารณาในการเขียนโมดูล PowerShell

บทความที่เกี่ยวข้อง