Import-Module (Microsoft.PowerShell.Core)
Import-Module
- โมดูล :
- Microsoft.PowerShell.Core
เพิ่มโมดูลในเซสชันปัจจุบัน
ไวยากรณ์
Import-Module
[-Global]
[-Prefix <String>]
[-Name] <String[]>
[-Function <String[]>]
[-Cmdlet <String[]>]
[-Variable <String[]>]
[-Alias <String[]>]
[-Force]
[-SkipEditionCheck]
[-PassThru]
[-AsCustomObject]
[-MinimumVersion <Version>]
[-MaximumVersion <String>]
[-RequiredVersion <Version>]
[-ArgumentList <Object[]>]
[-DisableNameChecking]
[-NoClobber]
[-Scope <String>]
[<CommonParameters>]Import-Module
[-Global]
[-Prefix <String>]
[-Name] <String[]>
[-Function <String[]>]
[-Cmdlet <String[]>]
[-Variable <String[]>]
[-Alias <String[]>]
[-Force]
[-SkipEditionCheck]
[-PassThru]
[-AsCustomObject]
[-MinimumVersion <Version>]
[-MaximumVersion <String>]
[-RequiredVersion <Version>]
[-ArgumentList <Object[]>]
[-DisableNameChecking]
[-NoClobber]
[-Scope <String>]
-PSSession <PSSession>
[<CommonParameters>]Import-Module
[-Global]
[-Prefix <String>]
[-Name] <String[]>
[-Function <String[]>]
[-Cmdlet <String[]>]
[-Variable <String[]>]
[-Alias <String[]>]
[-Force]
[-SkipEditionCheck]
[-PassThru]
[-AsCustomObject]
[-MinimumVersion <Version>]
[-MaximumVersion <String>]
[-RequiredVersion <Version>]
[-ArgumentList <Object[]>]
[-DisableNameChecking]
[-NoClobber]
[-Scope <String>]
-CimSession <CimSession>
[-CimResourceUri <Uri>]
[-CimNamespace <String>]
[<CommonParameters>]Import-Module
[-Name] <string[]>
-UseWindowsPowerShell
[-Global]
[-Prefix <string>]
[-Function <string[]>]
[-Cmdlet <string[]>]
[-Variable <string[]>]
[-Alias <string[]>]
[-Force]
[-PassThru]
[-AsCustomObject]
[-MinimumVersion <version>]
[-MaximumVersion <string>]
[-RequiredVersion <version>]
[-ArgumentList <Object[]>]
[-DisableNameChecking]
[-NoClobber]
[-Scope <string>]
[<CommonParameters>]Import-Module
[-Global]
[-Prefix <String>]
[-FullyQualifiedName] <ModuleSpecification[]>
[-Function <String[]>]
[-Cmdlet <String[]>]
[-Variable <String[]>]
[-Alias <String[]>]
[-Force]
[-SkipEditionCheck]
[-PassThru]
[-AsCustomObject]
[-ArgumentList <Object[]>]
[-DisableNameChecking]
[-NoClobber]
[-Scope <String>]
[<CommonParameters>]Import-Module
[-Global]
[-Prefix <String>]
[-FullyQualifiedName] <ModuleSpecification[]>
[-Function <String[]>]
[-Cmdlet <String[]>]
[-Variable <String[]>]
[-Alias <String[]>]
[-Force]
[-SkipEditionCheck]
[-PassThru]
[-AsCustomObject]
[-ArgumentList <Object[]>]
[-DisableNameChecking]
[-NoClobber]
[-Scope <String>]
-PSSession <PSSession>
[<CommonParameters>]Import-Module
[-FullyQualifiedName] <ModuleSpecification[]>
-UseWindowsPowerShell
[-Global]
[-Prefix <string>]
[-Function <string[]>]
[-Cmdlet <string[]>]
[-Variable <string[]>]
[-Alias <string[]>]
[-Force]
[-PassThru]
[-AsCustomObject]
[-ArgumentList <Object[]>]
[-DisableNameChecking]
[-NoClobber]
[-Scope <string>]
[<CommonParameters>]Import-Module
[-Global]
[-Prefix <String>]
[-Assembly] <Assembly[]>
[-Function <String[]>]
[-Cmdlet <String[]>]
[-Variable <String[]>]
[-Alias <String[]>]
[-Force]
[-SkipEditionCheck]
[-PassThru]
[-AsCustomObject]
[-ArgumentList <Object[]>]
[-DisableNameChecking]
[-NoClobber]
[-Scope <String>]
[<CommonParameters>]Import-Module
[-Global]
[-Prefix <String>]
[-Function <String[]>]
[-Cmdlet <String[]>]
[-Variable <String[]>]
[-Alias <String[]>]
[-Force]
[-SkipEditionCheck]
[-PassThru]
[-AsCustomObject]
[-ModuleInfo] <PSModuleInfo[]>
[-ArgumentList <Object[]>]
[-DisableNameChecking]
[-NoClobber]
[-Scope <String>]
[<CommonParameters>]คำอธิบาย
Import-Module cmdlet เพิ่มอย่างน้อยหนึ่งโมดูลในเซสชันปัจจุบัน เริ่มต้นใน PowerShell 3.0 โมดูลที่ติดตั้งจะถูกนำเข้าไปยังเซสชันโดยอัตโนมัติเมื่อคุณใช้คำสั่งหรือผู้ให้บริการใดๆ ในโมดูล อย่างไรก็ตาม คุณยังคงสามารถใช้คำสั่ง Import-Module เพื่อนำเข้าโมดูลได้ คุณสามารถปิดใช้งานการนำเข้าโมดูลอัตโนมัติได้โดยใช้ตัวแปรการตั้งค่า $PSModuleAutoloadingPreference สำหรับข้อมูลเพิ่มเติมเกี่ยวกับตัวแปร $PSModuleAutoloadingPreference โปรดดู about_Preference_Variables
โมดูลคือแพ็คเกจที่ประกอบด้วยสมาชิกที่สามารถใช้ใน PowerShell สมาชิกประกอบด้วย cmdlets ผู้ให้บริการ สคริปต์ ฟังก์ชัน ตัวแปร และเครื่องมือและไฟล์อื่นๆ หลังจากนำเข้าโมดูลแล้ว คุณสามารถใช้สมาชิกของโมดูลในเซสชันของคุณได้ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับโมดูล โปรดดูที่ about_Modules
ตามค่าเริ่มต้น Import-Module นำเข้าสมาชิกทั้งหมดที่โมดูลส่งออก แต่คุณสามารถใช้ Alias, Function, Cmdlet และพารามิเตอร์ ตัวแปร เพื่อจำกัดสมาชิกที่จะนำเข้า พารามิเตอร์ NoClobber ป้องกัน Import-Module จากการนำเข้าสมาชิกที่มีชื่อเดียวกันกับสมาชิกในเซสชันปัจจุบัน
Import-Module นำเข้าโมดูลเฉพาะในเซสชันปัจจุบัน หากต้องการนำเข้าโมดูลไปยังทุกเซสชันใหม่ ให้เพิ่มคำสั่ง Import-Module ไปยังโปรไฟล์ PowerShell ของคุณ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับโปรไฟล์ โปรดดู about_Profiles
คุณสามารถจัดการคอมพิวเตอร์ Windows ระยะไกลที่เปิดใช้งาน PowerShell ระยะไกลได้โดยสร้าง PSSession บนคอมพิวเตอร์ระยะไกล จากนั้นใช้พารามิเตอร์ PSSession ของ Import-Module เพื่อนำเข้าโมดูลที่ติดตั้งบนคอมพิวเตอร์ระยะไกล เมื่อคุณใช้คำสั่งที่นำเข้าในเซสชันปัจจุบัน คำสั่งจะทำงานบนคอมพิวเตอร์ระยะไกลโดยปริยาย
เริ่มต้นใน Windows PowerShell 3.0 คุณสามารถใช้ Import-Module เพื่อนำเข้าโมดูล Common Information Model (CIM) โมดูล CIM กำหนด cmdlets ในไฟล์ Cmdlet Definition XML (CDXML) คุณลักษณะนี้ช่วยให้คุณใช้ cmdlet ที่ถูกนำไปใช้ในแอสเซมบลีของโค้ดที่ไม่มีการจัดการ เช่น ที่เขียนด้วย C++
สำหรับคอมพิวเตอร์ระยะไกลที่ไม่ได้เปิดใช้งานการควบคุมระยะไกลของ PowerShell รวมถึงคอมพิวเตอร์ที่ไม่ได้ใช้ระบบปฏิบัติการ Windows คุณสามารถใช้พารามิเตอร์ CIMSession ของ Import-Module เพื่อนำเข้า โมดูล CIM จากคอมพิวเตอร์ระยะไกล คำสั่งที่นำเข้าจะทำงานโดยปริยายบนคอมพิวเตอร์ระยะไกล CIMSession คือการเชื่อมต่อกับ Windows Management Instrumentation (WMI) บนคอมพิวเตอร์ระยะไกล
ตัวอย่าง
ตัวอย่างที่ 1: นำเข้าสมาชิกของโมดูลเข้าสู่เซสชันปัจจุบัน
ตัวอย่างนี้จะนำเข้าสมาชิกของโมดูล PSDiagnostics เข้าสู่เซสชันปัจจุบัน
Import-Module -Name PSDiagnosticsตัวอย่างที่ 2: นำเข้าโมดูลทั้งหมดที่ระบุโดยเส้นทางโมดูล
ตัวอย่างนี้จะนำเข้าโมดูลที่มีอยู่ทั้งหมดในเส้นทางที่ระบุโดยตัวแปรสภาพแวดล้อม $env:PSModulePath ไปยังเซสชันปัจจุบัน
Get-Module -ListAvailable | Import-Moduleตัวอย่างที่ 3: นำเข้าสมาชิกของหลายโมดูลเข้าสู่เซสชันปัจจุบัน
ตัวอย่างนี้จะนำเข้าสมาชิกของโมดูล PSDiagnostics และ Dism เข้าสู่เซสชันปัจจุบัน
$m = Get-Module -ListAvailable PSDiagnostics, Dism
Import-Module -ModuleInfo $mGet-Module cmdlet รับโมดูล PSDiagnostics และ Dism และบันทึกออบเจ็กต์ในตัวแปร $m จำเป็นต้องใช้พารามิเตอร์ ListAvailable เมื่อคุณได้รับโมดูลที่ยังไม่ได้นำเข้าเข้าสู่เซสชัน
พารามิเตอร์ ModuleInfo ของ Import-Module ใช้เพื่อนำเข้าโมดูลเข้าสู่เซสชันปัจจุบัน
ตัวอย่างที่ 4: นำเข้าโมดูลทั้งหมดที่ระบุโดยเส้นทาง
ตัวอย่างนี้ใช้เส้นทางที่ชัดเจนเพื่อระบุโมดูลที่จะนำเข้า
Import-Module -Name c:\ps-test\modules\test -Verbose
VERBOSE: Loading module from path 'C:\ps-test\modules\Test\Test.psm1'.
VERBOSE: Exporting function 'my-parm'.
VERBOSE: Exporting function 'Get-Parameter'.
VERBOSE: Exporting function 'Get-Specification'.
VERBOSE: Exporting function 'Get-SpecDetails'.การใช้พารามิเตอร์ Verbose ทำให้ Import-Module รายงานความคืบหน้าขณะโหลดโมดูล หากไม่มีพารามิเตอร์ Verbose, PassThru หรือ AsCustomObject Import-Module จะไม่สร้างเอาต์พุตใดๆ เมื่อนำเข้า โมดูล
ตัวอย่างที่ 5: จำกัดสมาชิกโมดูลที่นำเข้าเข้าสู่เซสชัน
ตัวอย่างนี้แสดงวิธีจำกัดสมาชิกโมดูลที่จะนำเข้าในเซสชันและผลกระทบของคำสั่งนี้ในเซสชัน พารามิเตอร์ ฟังก์ชัน จำกัดสมาชิกที่นำเข้าจากโมดูล คุณยังสามารถใช้พารามิเตอร์ Alias, Variable และ Cmdlet เพื่อจำกัดสมาชิกอื่นๆ ที่โมดูลนำเข้า
Get-Module cmdlet รับวัตถุที่แสดงถึงโมดูล PSDiagnostics คุณสมบัติ ExportedCmdlets แสดงรายการ cmdlet ทั้งหมดที่โมดูลส่งออก แม้ว่าจะไม่ได้นำเข้าทั้งหมดก็ตาม
Import-Module PSDiagnostics -Function Disable-PSTrace, Enable-PSTrace
(Get-Module PSDiagnostics).ExportedCommands
Key Value
--- -----
Disable-PSTrace Disable-PSTrace
Disable-PSWSManCombinedTrace Disable-PSWSManCombinedTrace
Disable-WSManTrace Disable-WSManTrace
Enable-PSTrace Enable-PSTrace
Enable-PSWSManCombinedTrace Enable-PSWSManCombinedTrace
Enable-WSManTrace Enable-WSManTrace
Get-LogProperties Get-LogProperties
Set-LogProperties Set-LogProperties
Start-Trace Start-Trace
Stop-Trace Stop-Trace
Get-Command -Module PSDiagnostics
CommandType Name Version Source
----------- ---- ------- ------
Function Disable-PSTrace 6.1.0.0 PSDiagnostics
Function Enable-PSTrace 6.1.0.0 PSDiagnosticsการใช้พารามิเตอร์ Module ของ Get-Command cmdlet จะแสดงคำสั่งที่นำเข้าจากโมดูล PSDiagnostics ผลลัพธ์ยืนยันว่ามีการนำเข้า cmdlets Disable-PSTrace และ Enable-PSTrace เท่านั้น
ตัวอย่างที่ 6: นำเข้าสมาชิกของโมดูลและเพิ่มคำนำหน้า
ตัวอย่างนี้จะนำเข้าโมดูล PSDiagnostics ลงในเซสชันปัจจุบัน เพิ่มคำนำหน้าให้กับชื่อสมาชิก จากนั้นแสดงชื่อสมาชิกที่นำหน้า พารามิเตอร์ คำนำหน้า ของ นำเข้าโมดูล เพิ่มคำนำหน้า x ให้กับสมาชิกทั้งหมดที่นำเข้าจากโมดูล คำนำหน้าใช้กับสมาชิกในเซสชันปัจจุบันเท่านั้น มันไม่เปลี่ยนโมดูล พารามิเตอร์ PassThru ส่งคืนออบเจ็กต์โมดูลที่แสดงถึงโมดูลที่นำเข้า
Import-Module PSDiagnostics -Prefix x -PassThru
ModuleType Version Name ExportedCommands
---------- ------- ---- ----------------
Script 6.1.0.0 PSDiagnostics {Disable-xPSTrace, Disable-xPSWSManCombinedTrace, Disable-xW...
Get-Command -Module PSDiagnostics
CommandType Name Version Source
----------- ---- ------- ------
Function Disable-xPSTrace 6.1.0.0 PSDiagnostics
Function Disable-xPSWSManCombinedTrace 6.1.0.0 PSDiagnostics
Function Disable-xWSManTrace 6.1.0.0 PSDiagnostics
Function Enable-xPSTrace 6.1.0.0 PSDiagnostics
Function Enable-xPSWSManCombinedTrace 6.1.0.0 PSDiagnostics
Function Enable-xWSManTrace 6.1.0.0 PSDiagnostics
Function Get-xLogProperties 6.1.0.0 PSDiagnostics
Function Set-xLogProperties 6.1.0.0 PSDiagnostics
Function Start-xTrace 6.1.0.0 PSDiagnostics
Function Stop-xTrace 6.1.0.0 PSDiagnosticsGet-Command รับสมาชิกที่ได้รับการนำเข้าจากโมดูล ผลลัพธ์แสดงว่าสมาชิกโมดูลมีคำนำหน้าอย่างถูกต้อง
ตัวอย่างที่ 7: รับและใช้ออบเจ็กต์แบบกำหนดเอง
ตัวอย่างนี้สาธิตวิธีการรับและใช้ออบเจ็กต์แบบกำหนดเองที่ส่งคืนโดย Import-Module
ออบเจ็กต์แบบกำหนดเองประกอบด้วยสมาชิกสังเคราะห์ที่แสดงถึงสมาชิกโมดูลที่นำเข้าแต่ละรายการ ตัวอย่างเช่น cmdlet และฟังก์ชันในโมดูลจะถูกแปลงเป็นวิธีสคริปต์ของออบเจ็กต์แบบกำหนดเอง
ออบเจ็กต์แบบกำหนดเองมีประโยชน์ในการเขียนสคริปต์ นอกจากนี้ยังมีประโยชน์เมื่อออบเจ็กต์ที่นำเข้าหลายรายการมีชื่อเหมือนกัน การใช้วิธีสคริปต์ของออบเจ็กต์เทียบเท่ากับการระบุชื่อแบบเต็มของสมาชิกที่นำเข้า รวมถึงชื่อโมดูลด้วย
พารามิเตอร์ AsCustomObject ใช้ได้เฉพาะเมื่อนำเข้าโมดูลสคริปต์เท่านั้น ใช้ Get-Module เพื่อพิจารณาว่าโมดูลใดที่มีอยู่เป็นโมดูลสคริปต์
Get-Module -List | Format-Table -Property Name, ModuleType -AutoSize
Name ModuleType
---- ----------
Show-Calendar Script
BitsTransfer Manifest
PSDiagnostics Manifest
TestCmdlets Script
...
$a = Import-Module -Name Show-Calendar -AsCustomObject -Passthru
$a | Get-Member
TypeName: System.Management.Automation.PSCustomObject
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
Show-Calendar ScriptMethod System.Object Show-Calendar();
$a."Show-Calendar"()โมดูลสคริปต์ Show-Calendar ถูกนำเข้าโดยใช้พารามิเตอร์ AsCustomObject เพื่อร้องขอออบเจ็กต์ที่กำหนดเองและพารามิเตอร์ PassThru เพื่อส่งคืนออบเจ็กต์ ออบเจ็กต์แบบกำหนดเองที่ได้จะถูกบันทึกไว้ในตัวแปร $a
ตัวแปร $a ถูกส่งไปยัง cmdlet Get-Member เพื่อแสดงคุณสมบัติและวิธีการของวัตถุที่บันทึกไว้ ผลลัพธ์แสดงวิธีสคริปต์ Show-Calendar
หากต้องการเรียกใช้เมธอดสคริปต์ Show-Calendar ชื่อเมธอดจะต้องอยู่ในเครื่องหมายคำพูดเนื่องจากชื่อมีเครื่องหมายยัติภังค์
ตัวอย่างที่ 8: นำเข้าโมดูลอีกครั้งในเซสชันเดียวกัน
ตัวอย่างนี้แสดงวิธีใช้พารามิเตอร์ Force ของ Import-Module เมื่อคุณนำเข้าโมดูลอีกครั้งในเซสชันเดียวกัน พารามิเตอร์ บังคับ จะลบโมดูลที่โหลดแล้วนำเข้าอีกครั้ง
Import-Module PSDiagnostics
Import-Module PSDiagnostics -Force -Prefix PSคำสั่งแรกนำเข้าโมดูล PSDiagnostics คำสั่งที่สองนำเข้าโมดูลอีกครั้ง คราวนี้ใช้พารามิเตอร์ คำนำหน้า
หากไม่มีพารามิเตอร์ Force เซสชันจะรวมสำเนาของ PSDiagnostics cmdlet แต่ละรายการไว้สองชุด โดยชุดหนึ่งมีชื่อมาตรฐานและอีกชุดหนึ่งมีชื่อนำหน้า
ตัวอย่างที่ 9: เรียกใช้คำสั่งที่ถูกซ่อนไว้โดยคำสั่งที่นำเข้า
ตัวอย่างนี้แสดงวิธีการรันคำสั่งที่ถูกซ่อนไว้โดยคำสั่งที่นำเข้า โมดูล TestModule มีฟังก์ชันชื่อ Get-Date ที่ส่งคืนปีและวันของปี
Get-Date
Thursday, August 15, 2019 2:26:12 PM
Import-Module TestModule
Get-Date
19227
Get-Command Get-Date -All | Format-Table -Property CommandType, Name, ModuleName -AutoSize
CommandType Name ModuleName
----------- ---- ----------
Function Get-Date TestModule
Cmdlet Get-Date Microsoft.PowerShell.Utility
Microsoft.PowerShell.Utility\Get-Date
Thursday, August 15, 2019 2:28:31 PMcmdlet Get-Date แรกส่งคืนออบเจ็กต์ DateTime พร้อมวันที่ปัจจุบัน หลังจากการนำเข้าโมดูล TestModule แล้ว Get-Date จะส่งกลับปีและวันของปี
การใช้พารามิเตอร์ ทั้งหมด ของ Get-Command จะแสดงคำสั่ง Get-Date ทั้งหมดในเซสชัน ผลลัพธ์แสดงว่ามีคำสั่ง Get-Date สองคำสั่งในเซสชัน ฟังก์ชันจากโมดูล TestModule และ cmdlet จาก Microsoft.PowerShell.Utilityแข็งแกร่ง> โมดูล
เนื่องจากฟังก์ชันมีความสำคัญมากกว่า cmdlets ฟังก์ชัน Get-Date จากโมดูล TestModule จึงทำงาน แทน Get-Date cmdlet หากต้องการเรียกใช้ Get-Date เวอร์ชันดั้งเดิม คุณต้องระบุชื่อคำสั่งด้วยชื่อโมดูล
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับลำดับความสำคัญของคำสั่งใน PowerShell โปรดดู about_Command_Precedence
ตัวอย่างที่ 10: นำเข้าเวอร์ชันขั้นต่ำของโมดูล
ตัวอย่างนี้นำเข้าโมดูล PowerShellGet โดยจะใช้พารามิเตอร์ MinimumVersion ของ Import-Module เพื่อนำเข้าเฉพาะเวอร์ชัน 2.0.0 หรือสูงกว่าของโมดูล
Import-Module -Name PowerShellGet -MinimumVersion 2.0.0คุณยังสามารถใช้พารามิเตอร์ RequiredVersion เพื่อนำเข้าเวอร์ชันเฉพาะของโมดูล หรือใช้พารามิเตอร์ โมดูล และ เวอร์ชัน ของ # ต้องใช้คีย์เวิร์ด เพื่อกำหนดเวอร์ชันเฉพาะของโมดูลในสคริปต์
ตัวอย่างที่ 11: นำเข้าโดยใช้ชื่อแบบเต็ม
ตัวอย่างนี้นำเข้าเวอร์ชันเฉพาะของโมดูลโดยใช้ FullyQualifiedName
PS> Get-Module -ListAvailable PowerShellGet | Select-Object Name, Version
Name Version
---- -------
PowerShellGet 2.2.1
PowerShellGet 2.1.3
PowerShellGet 2.1.2
PowerShellGet 1.0.0.1
PS> Import-Module -FullyQualifiedName @{ModuleName = 'PowerShellGet'; ModuleVersion = '2.1.3' }ตัวอย่างที่ 12: นำเข้าโดยใช้เส้นทางแบบเต็ม
ตัวอย่างนี้นำเข้าเวอร์ชันเฉพาะของโมดูลโดยใช้พาธแบบเต็ม
PS> Get-Module -ListAvailable PowerShellGet | Select-Object Path
Path
----
C:\Program Files\PowerShell\Modules\PowerShellGet\2.2.1\PowerShellGet.psd1
C:\program files\powershell\6\Modules\PowerShellGet\PowerShellGet.psd1
C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\2.1.2\PowerShellGet.psd1
C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PowerShellGet.psd1
PS> Import-Module -Name 'C:\Program Files\PowerShell\Modules\PowerShellGet\2.2.1\PowerShellGet.psd1'ตัวอย่างที่ 13: นำเข้าโมดูลจากคอมพิวเตอร์ระยะไกล
ตัวอย่างนี้แสดงวิธีการใช้ cmdlet Import-Module เพื่อนำเข้าโมดูลจากคอมพิวเตอร์ระยะไกล คำสั่งนี้ใช้คุณลักษณะ Remoting โดยนัยของ PowerShell
เมื่อคุณนำเข้าโมดูลจากเซสชันอื่น คุณสามารถใช้ cmdlets ในเซสชันปัจจุบันได้ อย่างไรก็ตาม คำสั่งที่ใช้ cmdlet ของการทำงานในเซสชันระยะไกล
$s = New-PSSession -ComputerName Server01
Get-Module -PSSession $s -ListAvailable -Name NetSecurity
ModuleType Name ExportedCommands
---------- ---- ----------------
Manifest NetSecurity {New-NetIPsecAuthProposal, New-NetIPsecMainModeCryptoProposal, New-Ne...
Import-Module -PSSession $s -Name NetSecurity
Get-Command -Module NetSecurity -Name Get-*Firewall*
CommandType Name ModuleName
----------- ---- ----------
Function Get-NetFirewallAddressFilter NetSecurity
Function Get-NetFirewallApplicationFilter NetSecurity
Function Get-NetFirewallInterfaceFilter NetSecurity
Function Get-NetFirewallInterfaceTypeFilter NetSecurity
Function Get-NetFirewallPortFilter NetSecurity
Function Get-NetFirewallProfile NetSecurity
Function Get-NetFirewallRule NetSecurity
Function Get-NetFirewallSecurityFilter NetSecurity
Function Get-NetFirewallServiceFilter NetSecurity
Function Get-NetFirewallSetting NetSecurity
Get-NetFirewallRule -DisplayName "Windows Remote Management*" |
Format-Table -Property DisplayName, Name -AutoSize
DisplayName Name
----------- ----
Windows Remote Management (HTTP-In) WINRM-HTTP-In-TCP
Windows Remote Management (HTTP-In) WINRM-HTTP-In-TCP-PUBLIC
Windows Remote Management - Compatibility Mode (HTTP-In) WINRM-HTTP-Compat-In-TCPNew-PSSession สร้างเซสชันระยะไกล (PSSession) ไปยังคอมพิวเตอร์ Server01 PSSession จะถูกบันทึกไว้ในตัวแปร $s
การรัน Get-Module ด้วยพารามิเตอร์ PSSession แสดงว่าโมดูล NetSecurity ได้รับการติดตั้งและพร้อมใช้งานบนคอมพิวเตอร์ระยะไกล คำสั่งนี้เทียบเท่ากับการใช้ Invoke-Command cmdlet เพื่อรันคำสั่ง Get-Module ในเซสชันระยะไกล ตัวอย่างเช่น:
Invoke-Command $s {Get-Module -ListAvailable -Name NetSecurityการเรียกใช้ Import-Module ด้วยพารามิเตอร์ PSSession จะนำเข้าโมดูล NetSecurity จากคอมพิวเตอร์ระยะไกลไปยังเซสชันปัจจุบัน Get-Command cmdlet ดึงคำสั่งที่ขึ้นต้นด้วย Get และรวม ไฟร์วอลล์ จากโมดูล NetSecurity ผลลัพธ์ยืนยันว่าโมดูลและ cmdlet ของโมดูลถูกนำเข้าไปยังเซสชันปัจจุบัน
ต่อไป Get-NetFirewallRule cmdlet รับกฎไฟร์วอลล์ Windows Remote Management บนคอมพิวเตอร์ Server01 ซึ่งเทียบเท่ากับการใช้ Invoke-Command cmdlet เพื่อเรียกใช้ Get-NetFirewallRule บนเซสชันระยะไกล
ตัวอย่างที่ 14: จัดการที่เก็บข้อมูลบนคอมพิวเตอร์ระยะไกลโดยไม่มีระบบปฏิบัติการ Windows
ในตัวอย่างนี้ ผู้ดูแลระบบคอมพิวเตอร์ได้ติดตั้งผู้ให้บริการ Module Discovery WMI ซึ่งอนุญาตให้คุณใช้คำสั่ง CIM ที่ออกแบบมาสำหรับผู้ให้บริการได้
CimSession cmdlet สร้างเซสชันบนคอมพิวเตอร์ระยะไกลที่ชื่อ RSDGF03 เซสชันเชื่อมต่อกับบริการ WMI บนคอมพิวเตอร์ระยะไกล เซสชัน CIM จะถูกบันทึกไว้ในตัวแปร $cs Import-Module ใช้ CimSession ใน $cs เพื่อนำเข้าโมดูล Storage CIM จาก RSDGF03คอมพิวเตอร์
Get-Command cmdlet แสดงคำสั่ง Get-Disk ในโมดูล Storage เมื่อคุณนำเข้าโมดูล CIM ลงในเซสชันภายในเครื่อง PowerShell จะแปลงไฟล์ CDXML สำหรับแต่ละคำสั่งเป็นสคริปต์ PowerShell ซึ่งปรากฏเป็นฟังก์ชันในเซสชันภายในเครื่อง
แม้ว่า Get-Disk จะถูกพิมพ์ในเซสชันภายในเครื่อง cmdlet นั้นจะทำงานบนคอมพิวเตอร์ระยะไกลที่มีการนำเข้าโดยปริยาย คำสั่งส่งคืนวัตถุจากคอมพิวเตอร์ระยะไกลไปยังเซสชันภายในเครื่อง
$cs = New-CimSession -ComputerName RSDGF03
Import-Module -CimSession $cs -Name Storage
# Importing a CIM module, converts the CDXML files for each command into
# PowerShell scripts. These appear as functions in the local session.
Get-Command Get-Disk
CommandType Name ModuleName
----------- ---- ----------
Function Get-Disk Storage
# Use implicit remoting to query disks on the remote computer from which the
# module was imported.
Get-Disk
Number Friendly Name OperationalStatus Total Size Partition Style
------ ------------- ----------------- ---------- ---------------
0 Virtual HD ATA Device Online 40 GB MBRพารามิเตอร์
-Alias
ระบุนามแฝงที่ cmdlet นี้นำเข้าจากโมดูลไปยังเซสชันปัจจุบัน ป้อนรายการนามแฝงที่คั่นด้วยเครื่องหมายจุลภาค อนุญาตให้ใช้อักขระตัวแทนได้
บางโมดูลจะส่งออกนามแฝงที่เลือกไปยังเซสชันของคุณโดยอัตโนมัติเมื่อคุณนำเข้าโมดูล พารามิเตอร์นี้ให้คุณเลือกจากนามแฝงที่ส่งออก
- พิมพ์ :
String[]
- ตำแหน่ง:
ตั้งชื่อ
- ค่าเริ่มต้น:
None
- ที่จำเป็น:
False
- ยอมรับอินพุตไปป์ไลน์:
False
- ยอมรับอักขระตัวแทน:
True
-ArgumentList
ระบุอาร์เรย์ของอาร์กิวเมนต์หรือค่าพารามิเตอร์ที่ถูกส่งผ่านไปยังโมดูลสคริปต์ในระหว่างคำสั่ง Import-Module พารามิเตอร์นี้ใช้ได้เฉพาะเมื่อคุณกำลังนำเข้าโมดูลสคริปต์เท่านั้น
คุณยังสามารถอ้างถึงพารามิเตอร์ ArgumentList โดยใช้นามแฝงว่า args สำหรับข้อมูลเพิ่มเติมเกี่ยวกับลักษณะการทำงานของ ArgumentList โปรดดู about_Splatting
- พิมพ์ :
Object[]
- นามแฝง :
Args
- ตำแหน่ง:
ตั้งชื่อ
- ค่าเริ่มต้น:
None
- ที่จำเป็น:
False
- ยอมรับอินพุตไปป์ไลน์:
False
- ยอมรับอักขระตัวแทน:
False
-AsCustomObject
บ่งชี้ว่า cmdlet นี้ส่งคืนวัตถุแบบกำหนดเองพร้อมสมาชิกที่แสดงถึงสมาชิกโมดูลที่นำเข้า พารามิเตอร์นี้ใช้ได้สำหรับโมดูลสคริปต์เท่านั้น
เมื่อคุณใช้พารามิเตอร์ AsCustomObject Import-Module จะนำเข้าสมาชิกของโมดูลเข้าสู่เซสชัน จากนั้นส่งคืนออบเจ็กต์ PSCustomObject แทนที่จะเป็น วัตถุ PSModuleInfo คุณสามารถบันทึกออบเจ็กต์แบบกำหนดเองในตัวแปรและใช้การแจงนับการเข้าถึงของสมาชิกเพื่อเรียกใช้สมาชิกได้
- พิมพ์ :
SwitchParameter
- ตำแหน่ง:
ตั้งชื่อ
- ค่าเริ่มต้น:
False
- ที่จำเป็น:
False
- ยอมรับอินพุตไปป์ไลน์:
False
- ยอมรับอักขระตัวแทน:
False
-Assembly
ระบุอาร์เรย์ของวัตถุแอสเซมบลี cmdlet นี้นำเข้า cmdlet และผู้ให้บริการที่นำไปใช้ในวัตถุแอสเซมบลีที่ระบุ ป้อนตัวแปรที่มีวัตถุแอสเซมบลีหรือคำสั่งที่สร้างวัตถุแอสเซมบลี คุณยังสามารถไพพ์วัตถุแอสเซมบลีไปที่ Import-Module
เมื่อคุณใช้พารามิเตอร์นี้ เฉพาะ cmdlet และผู้ให้บริการที่นำไปใช้โดยแอสเซมบลีที่ระบุเท่านั้นที่จะถูกนำเข้า หากโมดูลมีไฟล์อื่น ไฟล์เหล่านั้นจะไม่ถูกนำเข้า และคุณอาจสูญเสียสมาชิกที่สำคัญของโมดูล ใช้พารามิเตอร์นี้สำหรับการดีบักและทดสอบโมดูล หรือเมื่อคุณได้รับคำแนะนำให้ใช้โดยผู้เขียนโมดูล
- พิมพ์ :
การประกอบ[]
- ตำแหน่ง:
0
- ค่าเริ่มต้น:
None
- ที่จำเป็น:
True
- ยอมรับอินพุตไปป์ไลน์:
True
- ยอมรับอักขระตัวแทน:
False
-CimNamespace
ระบุเนมสเปซของผู้ให้บริการ CIM สำรองที่แสดงโมดูล CIM ค่าเริ่มต้นคือเนมสเปซของผู้ให้บริการ Module Discovery WMI
ใช้พารามิเตอร์นี้เพื่อนำเข้าโมดูล CIM จากคอมพิวเตอร์และอุปกรณ์ที่ไม่ได้ใช้ระบบปฏิบัติการ Windows
พารามิเตอร์นี้ถูกนำมาใช้ใน Windows PowerShell 3.0
- พิมพ์ :
String
- ตำแหน่ง:
ตั้งชื่อ
- ค่าเริ่มต้น:
None
- ที่จำเป็น:
False
- ยอมรับอินพุตไปป์ไลน์:
False
- ยอมรับอักขระตัวแทน:
False
-CimResourceUri
ระบุตำแหน่งสำรองสำหรับโมดูล CIM ค่าเริ่มต้นคือ URI ทรัพยากรของผู้ให้บริการ Module Discovery WMI บนคอมพิวเตอร์ระยะไกล
ใช้พารามิเตอร์นี้เพื่อนำเข้าโมดูล CIM จากคอมพิวเตอร์และอุปกรณ์ที่ไม่ได้ใช้ระบบปฏิบัติการ Windows
พารามิเตอร์นี้ถูกนำมาใช้ใน Windows PowerShell 3.0
- พิมพ์ :
ยูริ
- ตำแหน่ง:
ตั้งชื่อ
- ค่าเริ่มต้น:
None
- ที่จำเป็น:
False
- ยอมรับอินพุตไปป์ไลน์:
False
- ยอมรับอักขระตัวแทน:
False
-CimSession
ระบุเซสชัน CIM บนคอมพิวเตอร์ระยะไกล ป้อนตัวแปรที่มีเซสชัน CIM หรือคำสั่งที่ได้รับเซสชัน CIM เช่น คำสั่ง Get-CimSession
Import-Module ใช้การเชื่อมต่อเซสชัน CIM เพื่อนำเข้าโมดูลจากคอมพิวเตอร์ระยะไกลไปยังเซสชันปัจจุบัน เมื่อคุณใช้คำสั่งจากโมดูลที่นำเข้าในเซสชันปัจจุบัน คำสั่งจะทำงานบนคอมพิวเตอร์ระยะไกล
คุณสามารถใช้พารามิเตอร์นี้เพื่อนำเข้าโมดูลจากคอมพิวเตอร์และอุปกรณ์ที่ไม่ได้ใช้ระบบปฏิบัติการ Windows และคอมพิวเตอร์ Windows ที่มี PowerShell แต่ไม่มีการเปิดใช้งานระยะไกลของ PowerShell
พารามิเตอร์นี้ถูกนำมาใช้ใน Windows PowerShell 3.0
- พิมพ์ :
CimSession
- ตำแหน่ง:
ตั้งชื่อ
- ค่าเริ่มต้น:
None
- ที่จำเป็น:
True
- ยอมรับอินพุตไปป์ไลน์:
False
- ยอมรับอักขระตัวแทน:
False
-Cmdlet
ระบุอาร์เรย์ของ cmdlet ที่ cmdlet นี้นำเข้าจากโมดูลไปยังเซสชันปัจจุบัน อนุญาตให้ใช้อักขระตัวแทนได้
บางโมดูลจะส่งออก cmdlets ที่เลือกไปยังเซสชันของคุณโดยอัตโนมัติเมื่อคุณนำเข้าโมดูล พารามิเตอร์นี้ให้คุณเลือกจาก cmdlets ที่ส่งออก
- พิมพ์ :
String[]
- ตำแหน่ง:
ตั้งชื่อ
- ค่าเริ่มต้น:
None
- ที่จำเป็น:
False
- ยอมรับอินพุตไปป์ไลน์:
False
- ยอมรับอักขระตัวแทน:
True
-DisableNameChecking
บ่งชี้ว่า cmdlet นี้ระงับข้อความที่เตือนคุณเมื่อคุณนำเข้า cmdlet หรือฟังก์ชันที่มีชื่อรวมกริยาที่ไม่ได้รับการอนุมัติหรืออักขระต้องห้าม
ตามค่าเริ่มต้น เมื่อโมดูลที่คุณนำเข้าส่งออก cmdlets หรือฟังก์ชันที่มีคำกริยาที่ไม่ได้รับการอนุมัติในชื่อ PowerShell จะแสดงข้อความเตือนต่อไปนี้:
คำเตือน: ชื่อคำสั่งที่นำเข้าบางชื่อมีคำกริยาที่ไม่ได้รับการอนุมัติซึ่งอาจทำให้ค้นพบได้น้อยลง ใช้พารามิเตอร์ Verbose เพื่อดูรายละเอียดเพิ่มเติม หรือพิมพ์ Get-Verb เพื่อดูรายการกริยาที่อนุมัติ
ข้อความนี้เป็นเพียงคำเตือนเท่านั้น โมดูลที่สมบูรณ์ยังคงถูกนำเข้า รวมถึงคำสั่งที่ไม่สอดคล้องกัน แม้ว่าข้อความจะแสดงต่อผู้ใช้โมดูล แต่ปัญหาการตั้งชื่อควรได้รับการแก้ไขโดยผู้เขียนโมดูล
- พิมพ์ :
SwitchParameter
- ตำแหน่ง:
ตั้งชื่อ
- ค่าเริ่มต้น:
False
- ที่จำเป็น:
False
- ยอมรับอินพุตไปป์ไลน์:
False
- ยอมรับอักขระตัวแทน:
False
-Force
พารามิเตอร์นี้ทำให้โมดูลถูกโหลดหรือรีโหลด ทับโมดูลปัจจุบัน บางโมดูลโหลดแอสเซมบลีภายนอก การนำเข้าล้มเหลวหากคุณกำลังนำเข้าโมดูลที่โหลดแอสเซมบลีเวอร์ชันที่ใหม่กว่า พารามิเตอร์ Force ไม่สามารถแทนที่ข้อผิดพลาดได้ คุณต้องเริ่มเซสชันใหม่เพื่อโหลดเวอร์ชันใหม่
- พิมพ์ :
SwitchParameter
- ตำแหน่ง:
ตั้งชื่อ
- ค่าเริ่มต้น:
False
- ที่จำเป็น:
False
- ยอมรับอินพุตไปป์ไลน์:
False
- ยอมรับอักขระตัวแทน:
False
-FullyQualifiedName
ค่าอาจเป็นชื่อโมดูล ข้อมูลจำเพาะของโมดูลแบบเต็ม หรือเส้นทางไปยังไฟล์โมดูล
เมื่อค่าเป็นเส้นทาง เส้นทางสามารถมีคุณสมบัติครบถ้วนหรือสัมพันธ์กันได้ เส้นทางสัมพัทธ์ได้รับการแก้ไขโดยสัมพันธ์กับสคริปต์ที่มีคำสั่งการใช้งาน
เมื่อค่าเป็นชื่อหรือข้อกำหนดเฉพาะของโมดูล PowerShell จะค้นหา PSModulePath สำหรับโมดูลที่ระบุ
ข้อมูลจำเพาะของโมดูลคือแฮชเทเบิลที่มีคีย์ดังต่อไปนี้
ModuleName- จำเป็น ระบุชื่อโมดูลGUID- เป็นทางเลือก ระบุ GUID ของโมดูลนอกจากนี้ จำเป็น จะต้องระบุอย่างน้อยหนึ่งในสามคีย์ด้านล่าง
ModuleVersion- ระบุเวอร์ชันขั้นต่ำที่ยอมรับได้ของโมดูล
MaximumVersion- ระบุเวอร์ชันสูงสุดที่ยอมรับได้ของโมดูลRequiredVersion- ระบุเวอร์ชันที่จำเป็นและแน่นอนของโมดูล ไม่สามารถใช้กับคีย์เวอร์ชันอื่นได้
- พิมพ์ :
ข้อมูลจำเพาะของโมดูล[]
- ตำแหน่ง:
0
- ค่าเริ่มต้น:
None
- ที่จำเป็น:
True
- ยอมรับอินพุตไปป์ไลน์:
True
- ยอมรับอักขระตัวแทน:
False
-Function
ระบุอาร์เรย์ของฟังก์ชันที่ cmdlet นี้นำเข้าจากโมดูลไปยังเซสชันปัจจุบัน อนุญาตให้ใช้อักขระตัวแทนได้ บางโมดูลจะส่งออกฟังก์ชันที่เลือกไปยังเซสชันของคุณโดยอัตโนมัติเมื่อคุณนำเข้าโมดูล พารามิเตอร์นี้ให้คุณเลือกจากฟังก์ชันที่ส่งออก
- พิมพ์ :
String[]
- ตำแหน่ง:
ตั้งชื่อ
- ค่าเริ่มต้น:
None
- ที่จำเป็น:
False
- ยอมรับอินพุตไปป์ไลน์:
False
- ยอมรับอักขระตัวแทน:
True
-Global
บ่งชี้ว่า cmdlet นี้นำเข้าโมดูลเข้าสู่สถานะเซสชันสากล เพื่อให้พร้อมใช้งานสำหรับคำสั่งทั้งหมดในเซสชัน
ตามค่าเริ่มต้น เมื่อเรียก Import-Module cmdlet จากพรอมต์คำสั่ง ไฟล์สคริปต์ หรือ scriptblock คำสั่งทั้งหมดจะถูกนำเข้าไปยังสถานะเซสชันส่วนกลาง
เมื่อเรียกใช้จากโมดูลอื่น Import-Module cmdlet จะนำเข้าคำสั่งในโมดูล รวมถึงคำสั่งจากโมดูลที่ซ้อนกัน เข้าสู่สถานะเซสชันของโมดูลที่เรียก
คำแนะนำที่เป็นประโยชน์
คุณควรหลีกเลี่ยงการเรียก Import-Module จากภายในโมดูล ให้ประกาศโมดูลเป้าหมายเป็นโมดูลที่ซ้อนกันในรายการของโมดูลหลักแทน การประกาศโมดูลที่ซ้อนกันจะช่วยเพิ่มความสามารถในการค้นพบการขึ้นต่อกัน
พารามิเตอร์ Global เทียบเท่ากับพารามิเตอร์ ขอบเขต ที่มีค่า Global
หากต้องการจำกัดคำสั่งที่โมดูลส่งออก ให้ใช้คำสั่ง Export-ModuleMember ในโมดูลสคริปต์
- พิมพ์ :
SwitchParameter
- ตำแหน่ง:
ตั้งชื่อ
- ค่าเริ่มต้น:
False
- ที่จำเป็น:
False
- ยอมรับอินพุตไปป์ไลน์:
False
- ยอมรับอักขระตัวแทน:
False
-MaximumVersion
ระบุเวอร์ชันสูงสุด cmdlet นี้นำเข้าเฉพาะเวอร์ชันของโมดูลที่น้อยกว่าหรือเท่ากับค่าที่ระบุ หากไม่มีเวอร์ชันใดเข้าข่าย Import-Module จะส่งกลับข้อผิดพลาด
- พิมพ์ :
String
- ตำแหน่ง:
ตั้งชื่อ
- ค่าเริ่มต้น:
None
- ที่จำเป็น:
False
- ยอมรับอินพุตไปป์ไลน์:
False
- ยอมรับอักขระตัวแทน:
False
-MinimumVersion
ระบุเวอร์ชันขั้นต่ำ cmdlet นี้นำเข้าเฉพาะเวอร์ชันของโมดูลที่มากกว่าหรือเท่ากับค่าที่ระบุ ใช้ชื่อพารามิเตอร์ MinimumVersion หรือชื่อแทนว่า Version หากไม่มีเวอร์ชันใดเข้าข่าย Import-Module จะสร้างข้อผิดพลาด
หากต้องการระบุเวอร์ชันที่แน่นอน ให้ใช้พารามิเตอร์ RequiredVersion คุณยังสามารถใช้พารามิเตอร์ โมดูล และ เวอร์ชัน ของคำหลัก #Requires เพื่อกำหนดเวอร์ชันเฉพาะของโมดูลในสคริปต์
พารามิเตอร์นี้ถูกนำมาใช้ใน Windows PowerShell 3.0
- พิมพ์ :
เวอร์ชัน
- นามแฝง :
Version
- ตำแหน่ง:
ตั้งชื่อ
- ค่าเริ่มต้น:
None
- ที่จำเป็น:
False
- ยอมรับอินพุตไปป์ไลน์:
False
- ยอมรับอักขระตัวแทน:
False
-ModuleInfo
ระบุอาร์เรย์ของวัตถุโมดูลที่จะนำเข้า ป้อนตัวแปรที่มีออบเจ็กต์โมดูล หรือคำสั่งที่รับออบเจ็กต์โมดูล เช่น คำสั่งต่อไปนี้: Get-Module -ListAvailable คุณยังสามารถไปป์วัตถุโมดูลไปที่ นำเข้า-โมดูล
- พิมพ์ :
ข้อมูล PSModule[]
- ตำแหน่ง:
0
- ค่าเริ่มต้น:
None
- ที่จำเป็น:
True
- ยอมรับอินพุตไปป์ไลน์:
True
- ยอมรับอักขระตัวแทน:
False
-Name
ระบุชื่อของโมดูลที่จะนำเข้า ป้อนชื่อของโมดูลหรือชื่อของไฟล์ในโมดูล เช่น .psd1, .psm1, .dll หรือ ไฟล์ .ps1 เส้นทางไฟล์เป็นทางเลือก ไม่อนุญาตให้ใช้อักขระตัวแทน คุณยังสามารถไพพ์ชื่อโมดูลและชื่อไฟล์ไปที่ Import-Module
หากคุณละเว้นเส้นทาง Import-Module จะค้นหาโมดูลในเส้นทางที่บันทึกไว้ในตัวแปรสภาพแวดล้อม $env:PSModulePath
ระบุเฉพาะชื่อโมดูลทุกครั้งที่เป็นไปได้ เมื่อคุณระบุชื่อไฟล์ เฉพาะสมาชิกที่ใช้งานในไฟล์นั้นเท่านั้นที่จะถูกนำเข้า หากโมดูลมีไฟล์อื่น ไฟล์เหล่านั้นจะไม่ถูกนำเข้า และคุณอาจสูญเสียสมาชิกที่สำคัญของโมดูล
บันทึก
แม้ว่าจะสามารถนำเข้าไฟล์สคริปต์ (.ps1) เป็นโมดูลได้ แต่ไฟล์สคริปต์มักจะไม่มีโครงสร้างเหมือนไฟล์โมดูลสคริปต์ (.psm1) การนำเข้าไฟล์สคริปต์ไม่ได้รับประกันว่าจะสามารถใช้เป็นโมดูลได้ สำหรับข้อมูลเพิ่มเติม โปรดดู about_Modules
- พิมพ์ :
String[]
- ตำแหน่ง:
0
- ค่าเริ่มต้น:
None
- ที่จำเป็น:
True
- ยอมรับอินพุตไปป์ไลน์:
True
- ยอมรับอักขระตัวแทน:
True
-NoClobber
ป้องกันการนำเข้าคำสั่งที่มีชื่อเดียวกันกับคำสั่งที่มีอยู่ในเซสชันปัจจุบัน ตามค่าเริ่มต้น Import-Module จะนำเข้าคำสั่งโมดูลที่ส่งออกทั้งหมด
คำสั่งที่มีชื่อเดียวกันสามารถซ่อนหรือแทนที่คำสั่งในเซสชันได้ เพื่อหลีกเลี่ยงความขัดแย้งของชื่อคำสั่งในเซสชัน ให้ใช้พารามิเตอร์ คำนำหน้า หรือ NoClobber สำหรับข้อมูลเพิ่มเติมเกี่ยวกับความขัดแย้งของชื่อและลำดับความสำคัญของคำสั่ง โปรดดูที่ "โมดูลและความขัดแย้งของชื่อ" ใน about_Modules และ about_Command_Precedence
พารามิเตอร์นี้ถูกนำมาใช้ใน Windows PowerShell 3.0
- พิมพ์ :
SwitchParameter
- นามแฝง :
NoOverwrite
- ตำแหน่ง:
ตั้งชื่อ
- ค่าเริ่มต้น:
False
- ที่จำเป็น:
False
- ยอมรับอินพุตไปป์ไลน์:
False
- ยอมรับอักขระตัวแทน:
False
-PassThru
ส่งกลับวัตถุที่เป็นตัวแทนของโมดูลที่นำเข้า ตามค่าเริ่มต้น cmdlet นี้ไม่สร้างผลลัพธ์ใดๆ
- พิมพ์ :
SwitchParameter
- ตำแหน่ง:
ตั้งชื่อ
- ค่าเริ่มต้น:
False
- ที่จำเป็น:
False
- ยอมรับอินพุตไปป์ไลน์:
False
- ยอมรับอักขระตัวแทน:
False
-Prefix
ระบุคำนำหน้าที่ cmdlet นี้เพิ่มให้กับคำนามในชื่อของสมาชิกโมดูลที่นำเข้า
ใช้พารามิเตอร์นี้เพื่อหลีกเลี่ยงความขัดแย้งของชื่อที่อาจเกิดขึ้นเมื่อสมาชิกที่แตกต่างกันในเซสชันมีชื่อเหมือนกัน พารามิเตอร์นี้ไม่เปลี่ยนโมดูล และไม่ส่งผลต่อไฟล์ที่โมดูลนำเข้าเพื่อการใช้งานของตัวเอง สิ่งเหล่านี้เรียกว่าโมดูลที่ซ้อนกัน cmdlet นี้มีผลเฉพาะกับชื่อของสมาชิกในเซสชันปัจจุบันเท่านั้น
ตัวอย่างเช่น หากคุณระบุคำนำหน้า UTC แล้วนำเข้า cmdlet Get-Date cmdlet จะรู้จักในเซสชันเป็น Get-UTCDate และไม่สับสนกับ cmdlet Get-Date ดั้งเดิม
ค่าของพารามิเตอร์นี้มีความสำคัญเหนือกว่าคุณสมบัติ DefaultCommandPrefix ของโมดูล ซึ่งระบุคำนำหน้าเริ่มต้น
- พิมพ์ :
String
- ตำแหน่ง:
ตั้งชื่อ
- ค่าเริ่มต้น:
None
- ที่จำเป็น:
False
- ยอมรับอินพุตไปป์ไลน์:
False
- ยอมรับอักขระตัวแทน:
False
-PSSession
ระบุเซสชันที่จัดการโดยผู้ใช้ PowerShell (PSSession) ซึ่ง cmdlet นี้นำเข้าโมดูลไปยังเซสชันปัจจุบัน ป้อนตัวแปรที่มี PSSession หรือคำสั่งที่ได้รับ PSSession เช่น คำสั่ง Get-PSSession
เมื่อคุณนำเข้าโมดูลจากเซสชันอื่นไปยังเซสชันปัจจุบัน คุณสามารถใช้ cmdlets จากโมดูลในเซสชันปัจจุบันได้ เช่นเดียวกับที่คุณใช้ cmdlets จากโมดูลในเครื่อง คำสั่งที่ใช้ cmdlet ระยะไกลจะทำงานในเซสชันระยะไกล แต่ PowerShell จัดการรายละเอียดระยะไกลในเบื้องหลัง
พารามิเตอร์นี้ใช้คุณลักษณะ Remoting โดยนัยของ PowerShell เทียบเท่ากับการใช้ Import-PSSession cmdlet เพื่อนำเข้าโมดูลเฉพาะจากเซสชัน
นำเข้าโมดูลไม่สามารถนำเข้าโมดูล PowerShell หลักจากเซสชันอื่นได้ โมดูล PowerShell หลักมีชื่อที่ขึ้นต้นด้วย Microsoft.PowerShell
พารามิเตอร์นี้ถูกนำมาใช้ใน Windows PowerShell 3.0
- พิมพ์ :
PSSession
- ตำแหน่ง:
ตั้งชื่อ
- ค่าเริ่มต้น:
None
- ที่จำเป็น:
True
- ยอมรับอินพุตไปป์ไลน์:
False
- ยอมรับอักขระตัวแทน:
False
-RequiredVersion
ระบุเวอร์ชันของโมดูลที่ cmdlet นี้นำเข้า หากไม่ได้ติดตั้งเวอร์ชัน Import-Module จะสร้างข้อผิดพลาด
ตามค่าเริ่มต้น Import-Module จะนำเข้าโมดูลโดยไม่ตรวจสอบหมายเลขเวอร์ชัน
หากต้องการระบุเวอร์ชันขั้นต่ำ ให้ใช้พารามิเตอร์ MinimumVersion คุณยังสามารถใช้พารามิเตอร์ โมดูล และ เวอร์ชัน ของคำหลัก #Requires เพื่อกำหนดเวอร์ชันเฉพาะของโมดูลในสคริปต์
พารามิเตอร์นี้ถูกนำมาใช้ใน Windows PowerShell 3.0
สคริปต์ที่ใช้ RequiredVersion เพื่อนำเข้าโมดูลที่รวมอยู่ในระบบปฏิบัติการ Windows รุ่นที่มีอยู่จะไม่ทำงานโดยอัตโนมัติในระบบปฏิบัติการ Windows รุ่นต่อๆ ไป เนื่องจากหมายเลขเวอร์ชันของโมดูล PowerShell ในระบบปฏิบัติการ Windows รุ่นต่อๆ ไปจะสูงกว่าหมายเลขเวอร์ชันของโมดูลในระบบปฏิบัติการ Windows รุ่นที่มีอยู่
- พิมพ์ :
เวอร์ชัน
- ตำแหน่ง:
ตั้งชื่อ
- ค่าเริ่มต้น:
None
- ที่จำเป็น:
False
- ยอมรับอินพุตไปป์ไลน์:
False
- ยอมรับอักขระตัวแทน:
False
-Scope
ระบุขอบเขตที่จะนำเข้าโมดูลเข้ามา
ค่าที่ยอมรับได้สำหรับพารามิเตอร์นี้คือ:
- ทั่วโลก ใช้ได้กับทุกคำสั่งในเซสชัน เทียบเท่ากับพารามิเตอร์ Global
- ท้องถิ่น มีเฉพาะในขอบเขตปัจจุบันเท่านั้น
ตามค่าเริ่มต้น เมื่อเรียก Import-Module cmdlet จากพรอมต์คำสั่ง ไฟล์สคริปต์ หรือ scriptblock คำสั่งทั้งหมดจะถูกนำเข้าไปยังสถานะเซสชันส่วนกลาง คุณสามารถใช้พารามิเตอร์ -Scope Local เพื่อนำเข้าเนื้อหาโมดูลลงในสคริปต์หรือขอบเขต scriptblock
เมื่อเรียกใช้จากโมดูลอื่น Import-Module cmdlet จะนำเข้าคำสั่งในโมดูล รวมถึงคำสั่งจากโมดูลที่ซ้อนกัน เข้าสู่สถานะเซสชันของผู้เรียก การระบุ -Scope Global หรือ -Global บ่งชี้ว่า cmdlet นี้นำเข้าโมดูลเข้าสู่สถานะเซสชันส่วนกลาง เพื่อให้พร้อมใช้งานสำหรับคำสั่งทั้งหมดในเซสชัน
พารามิเตอร์ Global เทียบเท่ากับพารามิเตอร์ ขอบเขต ที่มีค่า Global
พารามิเตอร์นี้ถูกนำมาใช้ใน Windows PowerShell 3.0
- พิมพ์ :
String
- ค่าที่ยอมรับ:
ท้องถิ่นระดับโลก
- ตำแหน่ง:
ตั้งชื่อ
- ค่าเริ่มต้น:
None
- ที่จำเป็น:
False
- ยอมรับอินพุตไปป์ไลน์:
False
- ยอมรับอักขระตัวแทน:
False
-SkipEditionCheck
ข้ามการตรวจสอบในช่อง CompatiblePSEditions
อนุญาตให้โหลดโมดูลจากไดเรกทอรีโมดูล "$ ($env:windir)\System32\WindowsPowerShell\v1.0\Modules" ลงใน PowerShell Core เมื่อโมดูลนั้นไม่ได้ระบุ Core ในช่องรายการ CompatiblePSEditions
เมื่อนำเข้าโมดูลจากเส้นทางอื่น สวิตช์นี้จะไม่ทำอะไรเลย เนื่องจากไม่มีการตรวจสอบ บน Linux และ macOS สวิตช์นี้ไม่ทำอะไรเลย
สำหรับข้อมูลเพิ่มเติม โปรดดู about_PowerShell_Editions
คำเตือน
Import-Module -SkipEditionCheck ยังคงมีแนวโน้มที่จะล้มเหลวในการนำเข้าโมดูล แม้ว่าจะสำเร็จ แต่การเรียกใช้คำสั่งจากโมดูลอาจล้มเหลวในภายหลังเมื่อพยายามใช้ API ที่เข้ากันไม่ได้
- พิมพ์ :
SwitchParameter
- ตำแหน่ง:
ตั้งชื่อ
- ค่าเริ่มต้น:
False
- ที่จำเป็น:
False
- ยอมรับอินพุตไปป์ไลน์:
False
- ยอมรับอักขระตัวแทน:
False
-UseWindowsPowerShell
โหลดโมดูลโดยใช้ฟังก์ชันความเข้ากันได้ของ Windows PowerShell ดู about_Windows_PowerShell_Compatibility สำหรับข้อมูลเพิ่มเติม
- พิมพ์ :
SwitchParameter
- นามแฝง :
UseWinPS
- ตำแหน่ง:
ตั้งชื่อ
- ค่าเริ่มต้น:
False
- ที่จำเป็น:
True
- ยอมรับอินพุตไปป์ไลน์:
False
- ยอมรับอักขระตัวแทน:
False
-Variable
ระบุอาร์เรย์ของตัวแปรที่ cmdlet นี้นำเข้าจากโมดูลไปยังเซสชันปัจจุบัน ป้อนรายการตัวแปร อนุญาตให้ใช้อักขระตัวแทนได้
บางโมดูลจะส่งออกตัวแปรที่เลือกไปยังเซสชันของคุณโดยอัตโนมัติเมื่อคุณนำเข้าโมดูล พารามิเตอร์นี้ให้คุณเลือกจากตัวแปรที่ส่งออก
- พิมพ์ :
String[]
- ตำแหน่ง:
ตั้งชื่อ
- ค่าเริ่มต้น:
None
- ที่จำเป็น:
False
- ยอมรับอินพุตไปป์ไลน์:
False
- ยอมรับอักขระตัวแทน:
True
อินพุต
สตริง
คุณสามารถไปป์ชื่อโมดูลไปที่ cmdlet นี้
PSModuleInfo
คุณสามารถไปป์วัตถุโมดูลไปที่ cmdlet นี้
การประกอบ
คุณสามารถไปป์วัตถุแอสเซมบลีกับ cmdlet นี้
เอาท์พุต
ไม่มี
ตามค่าเริ่มต้น cmdlet นี้จะส่งกลับไม่มีผลลัพธ์
PSModuleInfo
หากคุณระบุพารามิเตอร์ PassThru cmdlet จะสร้างอ็อบเจ็กต์ System.Management.Automation.PSModuleInfo ที่แสดงถึงโมดูลที่นำเข้า
PSCustomObject
หากคุณระบุพารามิเตอร์ AsCustomObject และ PassThru ร่วมกัน cmdlet จะสร้างออบเจ็กต์ PSCustomObject ที่แสดงถึงโมดูล
หมายเหตุ
PowerShell มีนามแฝงต่อไปนี้สำหรับ Import-Module:
ทุกแพลตฟอร์ม:
ipmo
ก่อนที่คุณจะสามารถนำเข้าโมดูลได้ โมดูลจะต้องสามารถเข้าถึงได้โดยเครื่องคอมพิวเตอร์ของคุณและรวมอยู่ในตัวแปรสภาพแวดล้อม PSModulePath สำหรับข้อมูลเพิ่มเติม โปรดดู about_Modules
คุณยังสามารถใช้พารามิเตอร์ PSSession และ CIMSession เพื่อนำเข้าโมดูลที่ติดตั้งบนคอมพิวเตอร์ระยะไกล อย่างไรก็ตาม คำสั่งที่ใช้ cmdlet ของโมดูลเหล่านี้ทำงานในเซสชันระยะไกลบนคอมพิวเตอร์ระยะไกล
หากคุณนำเข้าสมาชิกที่มีชื่อเดียวกันและเป็นประเภทเดียวกันในเซสชันของคุณ PowerShell จะใช้สมาชิกที่นำเข้าครั้งล่าสุดตามค่าเริ่มต้น ตัวแปรและนามแฝงจะถูกแทนที่ และไม่สามารถเข้าถึงต้นฉบับได้ ฟังก์ชัน cmdlets และผู้ให้บริการเป็นเพียงเงาของสมาชิกใหม่ สามารถเข้าถึงได้โดยกำหนดชื่อคำสั่งด้วยชื่อของสแน็ปอิน โมดูล หรือเส้นทางฟังก์ชัน
หากต้องการอัปเดตข้อมูลการจัดรูปแบบสำหรับคำสั่งที่นำเข้าจากโมดูล ให้ใช้ Update-FormatData cmdlet หากไฟล์การจัดรูปแบบสำหรับโมดูลเปลี่ยนแปลง ให้ใช้ Update-FormatData cmdlet เพื่ออัปเดตข้อมูลการจัดรูปแบบสำหรับคำสั่งที่นำเข้า คุณไม่จำเป็นต้องนำเข้าโมดูลอีกครั้ง
เริ่มต้นใน Windows PowerShell 3.0 คำสั่งหลักที่ติดตั้งด้วย PowerShell จะถูกรวมไว้ในโมดูล ใน Windows PowerShell 2.0 และในโปรแกรมโฮสต์ที่สร้างเซสชันแบบเก่าใน PowerShell เวอร์ชันใหม่กว่า คำสั่งหลักจะรวมอยู่ในสแนปอิน (PSSnapins) ข้อยกเว้นคือ Microsoft.PowerShell.Core ซึ่งเป็นสแน็ปอินเสมอ นอกจากนี้ เซสชันระยะไกล เช่น เซสชันที่เริ่มต้นโดย New-PSSession cmdlet ถือเป็นเซสชันแบบเก่าที่มีสแนปอินหลักรวมอยู่ด้วย
สำหรับข้อมูลเกี่ยวกับเมธอด CreateDefault2 ที่สร้างเซสชันรูปแบบใหม่ด้วยโมดูลหลัก โปรดดูเมธอด CreateDefault2
ใน Windows PowerShell 2.0 ค่าคุณสมบัติบางอย่างของวัตถุโมดูล เช่น ค่าคุณสมบัติ ExportedCmdlets และ NestedModules จะไม่ถูกเติมจนกว่าโมดูลจะถูกนำเข้า
หากคุณพยายามนำเข้าโมดูลที่มีแอสเซมบลีโหมดผสมที่ไม่เข้ากันกับ Windows PowerShell 3.0+ Import-Module จะส่งกลับข้อความแสดงข้อผิดพลาดเช่นเดียวกับข้อความต่อไปนี้
Import-Module : แอสเซมบลีโหมดผสมถูกสร้างขึ้นโดยเทียบกับเวอร์ชัน 'v2.0.50727' ของรันไทม์และไม่สามารถโหลดในรันไทม์ 4.0 โดยไม่มีข้อมูลการกำหนดค่าเพิ่มเติม
ข้อผิดพลาดนี้เกิดขึ้นเมื่อโมดูลที่ออกแบบมาสำหรับ Windows PowerShell 2.0 ประกอบด้วยแอสเซมบลีของโมดูลผสมอย่างน้อยหนึ่งชุด แอสเซมบลีโมดูลผสมที่มีทั้งโค้ดที่ได้รับการจัดการและไม่ได้รับการจัดการ เช่น C++ และ C#
เมื่อต้องการนำเข้าโมดูลที่ประกอบด้วยแอสเซมบลีโหมดผสม ให้เริ่ม Windows PowerShell 2.0 โดยใช้คำสั่งต่อไปนี้ จากนั้นลองใช้คำสั่ง Import-Module อีกครั้ง
PowerShell.exe -Version 2.0หากต้องการใช้คุณลักษณะเซสชัน CIM คอมพิวเตอร์ระยะไกลต้องมี WS-Management remoting และ Windows Management Instrumentation (WMI) ซึ่งเป็นการนำ Microsoft ไปใช้มาตรฐาน Common Information Model (CIM) คอมพิวเตอร์ต้องมีผู้ให้บริการ Module Discovery WMI หรือผู้ให้บริการ CIM สำรองที่มีคุณสมบัติพื้นฐานเหมือนกัน
คุณสามารถใช้คุณลักษณะเซสชัน CIM บนคอมพิวเตอร์ที่ไม่ได้ใช้ระบบปฏิบัติการ Windows และบนคอมพิวเตอร์ Windows ที่มี PowerShell แต่ไม่มีการเปิดใช้งานระยะไกลของ PowerShell
คุณยังสามารถใช้พารามิเตอร์ CIM เพื่อรับโมดูล CIM จากคอมพิวเตอร์ที่เปิดใช้งานการทำงานระยะไกลของ PowerShell รวมถึงคอมพิวเตอร์ในระบบด้วย เมื่อคุณสร้างเซสชัน CIM บนเครื่องคอมพิวเตอร์ PowerShell จะใช้ DCOM แทน WMI เพื่อสร้างเซสชัน
ตามค่าเริ่มต้น Import-Module จะนำเข้าโมดูลในขอบเขตส่วนกลาง แม้ว่าจะเรียกจากขอบเขตสืบทอดก็ตาม ขอบเขตระดับบนสุดและขอบเขตสืบทอดทั้งหมดสามารถเข้าถึงองค์ประกอบที่ส่งออกของโมดูล
ในขอบเขตสืบทอด -Scope Local จำกัดการนำเข้าไปยังขอบเขตนั้นและขอบเขตสืบทอดทั้งหมด ขอบเขตหลักจะไม่เห็นสมาชิกที่นำเข้า
บันทึก
Get-Module แสดงโมดูลทั้งหมดที่โหลดในเซสชันปัจจุบัน ซึ่งรวมถึงโมดูลที่โหลดภายในเครื่องในขอบเขตสืบทอด ใช้ Get-Command -Module modulename เพื่อดูว่าสมาชิกตัวใดถูกโหลดในขอบเขตปัจจุบัน
Import-Module ไม่โหลดคำจำกัดความของคลาสและการแจงนับในโมดูล ใช้คำสั่ง using module ที่จุดเริ่มต้นของสคริปต์ของคุณ สิ่งนี้จะนำเข้าโมดูล รวมถึงคำจำกัดความของคลาสและการแจงนับ สำหรับข้อมูลเพิ่มเติม โปรดดูที่ about_Using
ในระหว่างการพัฒนาโมดูลสคริปต์ เป็นเรื่องปกติที่จะต้องเปลี่ยนแปลงโค้ด จากนั้นโหลดเวอร์ชันใหม่ของโมดูลโดยใช้ Import-Module พร้อมด้วยพารามิเตอร์ Force ใช้ได้กับการเปลี่ยนแปลงฟังก์ชันในโมดูลรูทเท่านั้น Import-Module จะไม่รีโหลดโมดูลที่ซ้อนกันใดๆ นอกจากนี้ ไม่มีวิธีโหลดคลาสหรือการแจงนับที่อัปเดตใดๆ
หากต้องการรับสมาชิกโมดูลที่อัปเดตที่กำหนดในโมดูลที่ซ้อนกัน ให้ลบโมดูลด้วย Remove-Module จากนั้นนำเข้าโมดูลอีกครั้ง
หากโมดูลถูกโหลดด้วยคำสั่ง using คุณต้องเริ่มเซสชันใหม่เพื่อนำเข้าคำจำกัดความที่อัปเดตสำหรับคลาสและการแจงนับ คลาสและการแจงนับที่กำหนดใน PowerShell และนำเข้าด้วยคำสั่ง using ไม่สามารถยกเลิกการโหลดได้