โมดูล PowerShell ยอดนิยมส่วนใหญ่ได้รับการติดตั้งทางออนไลน์จากแกลเลอรี PowerShell อย่างเป็นทางการ (PSGallery
) ที่เก็บโดยใช้ Install-Module สั่งการ. อย่างไรก็ตาม คุณจะไม่สามารถติดตั้งโมดูล PowerShell ได้หากคอมพิวเตอร์ของคุณอยู่ในเครือข่ายแยก หรือการเข้าถึง PSRepository โดยตรงถูกจำกัด เช่นเดียวกับเมื่อคุณพยายามติดตั้งโมดูล PowerShell บนโฮสต์ Windows Server ซึ่งมักจะถูกบล็อกการเข้าถึงอินเทอร์เน็ตโดยตรง ในบทความนี้ เราจะแสดงวิธีการติดตั้งโมดูล PowerShell แบบออฟไลน์และนำเข้าโมดูลจากคอมพิวเตอร์ระยะไกล (เช่น เมื่อใช้โมดูล PoSh การจัดการ SQLServer)
โปรดทราบว่าไม่มีลิงก์โดยตรงสำหรับดาวน์โหลดโมดูลจาก PowershellGallery.com สิ่งเดียวที่คุณสามารถดาวน์โหลดได้จากเว็บไซต์คือแพ็คเกจ NuGet (a .nupkg ไฟล์). คุณสามารถติดตั้งโมดูล PowerShell จากไฟล์ NUPKG ได้ แต่จะไม่ใช่การติดตั้งโมดูลที่สมบูรณ์ (ปัญหาหลักคือการที่การขึ้นต่อกันไม่ได้รับการแก้ไข)
จะติดตั้งโมดูล PowerShell บนคอมพิวเตอร์ออฟไลน์ได้อย่างไร
ก่อนอื่น ติดตั้งโมดูล PowerShell ที่คุณต้องการบนคอมพิวเตอร์ที่เชื่อมต่ออินเทอร์เน็ตได้
ต้องติดตั้ง PowerShell เวอร์ชัน 5.1 หรือใหม่กว่าบนคอมพิวเตอร์:
$PSVersionTable.PSVersion
ตรวจสอบให้แน่ใจว่ามีโมดูลอยู่ใน PSGallery:
Find-Module –Name *SqlServer*| Select Name, Version, Repository
ดาวน์โหลดโมดูลไปยังโฟลเดอร์ภายในเครื่องที่ระบุบนคอมพิวเตอร์ของคุณ:
Save-Module –Name SqlServer –Path C:\PS\
คัดลอกโฟลเดอร์ไปยังคอมพิวเตอร์เครื่องอื่นที่คุณต้องการติดตั้งโมดูล
มาดูกันว่าโมดูล PowerShell จัดเก็บอยู่ในโฟลเดอร์ใด:
$env:PSModulePath -split ";"
อย่างที่คุณเห็น โมดูล PowerShell จะอยู่บนเส้นทางใดเส้นทางหนึ่งต่อไปนี้:
C:\Users\username\Documents\WindowsPowerShell\Modules
($Home\Documents\PowerShell\Modules
) – โมดูล PowerShell ในโฟลเดอร์นี้มีให้สำหรับผู้ใช้นี้เท่านั้น (CurrentUser);C:\Program Files\WindowsPowerShell\Modules
($Env:ProgramFiles\WindowsPowerShell\Modules
) — พาธใช้สำหรับติดตั้งโมดูลสำหรับผู้ใช้คอมพิวเตอร์ทุกคน (-Scope AllUsers
);C:\Windows\system32\WindowsPowerShell\v1.0\Modules
– โฟลเดอร์เริ่มต้นสำหรับโมดูลในตัว
คัดลอกโมดูลไปที่ C:\Program Files\WindowsPowerShell\Modules .
ตรวจสอบให้แน่ใจว่าโมดูล SQLServer พร้อมใช้งานแล้ว:
Get-Module -Name SQLServer -ListAvailable
คุณสามารถรับไดเร็กทอรีโมดูลดังแสดงด้านล่าง:
(Get-Module -ListAvailable SQLServer).path
แสดงรายการคำสั่งที่มีอยู่ในโมดูล:
Get-Command -Module SQLServer
ในทำนองเดียวกัน คุณสามารถติดตั้งโมดูลใดก็ได้ ฉันมักจะใช้วิธีนี้ในการติดตั้ง SQLServer, PSWindowsUpdate หรือ PowerCLI สำหรับโมดูล VMWare
ด้วยเหตุผลที่ชัดเจน ไม่ควรติดตั้งโมดูล AzureAD และ Exchange Online PowerShell บนอุปกรณ์ออฟไลน์นำเข้าโมดูล PowerShell จากคอมพิวเตอร์ระยะไกล
หากคุณไม่ต้องการติดตั้งโมดูล PowerShell บนคอมพิวเตอร์ทุกเครื่อง คุณสามารถนำเข้าโมดูลใดก็ได้จากคอมพิวเตอร์ระยะไกลโดยใช้ PSRemoting:
$session = New-PSSession -ComputerName dub-sql1
หากต้องการแสดงรายการโมดูลที่ติดตั้งบนคอมพิวเตอร์ระยะไกล:
Get-Module -PSSession $session –ListAvailable
ในการนำเข้าโมดูล PowerShell ที่ระบุไปยังคอมพิวเตอร์ของคุณ:
Import-Module -PSsession $session -Name SqlServer
อย่าลืมปิดเซสชั่นเมื่อเสร็จสิ้น:
Remove-PSSession $session
อีกวิธีหนึ่งที่น่าสนใจในการใช้โมดูล PowerShell ที่ติดตั้งบนคอมพิวเตอร์ระยะไกลผ่านการถอดออกโดยนัย .
เชื่อมต่อกับคอมพิวเตอร์ระยะไกลโดยใช้ Invoke-Command และนำเข้าโมดูล PowerShell ที่คุณต้องการ:$session = New-PSSession -ComputerName dub-sql1
Invoke-Command {Import-Module SqlServer} -Session $session
ส่งออก cmdlet ของโมดูลจากเซสชันระยะไกลไปยังโมดูลท้องถิ่น:
Export-PSSession -Session $s -CommandName *-Sql* -OutputModule RemoteSQLServer -AllowClobber
คำสั่งสร้างโมดูล RemoteSQLServer PowerShell ใหม่บนคอมพิวเตอร์ของคุณ (ใน C:\Program Files\WindowsPowerShell\Modules) ไฟล์ cmdlet เองจะไม่ถูกคัดลอก
ปิดเซสชั่น:
Remove-PSSession $session
จากนั้นเพื่อใช้ PowerShell cmdlets จากโมดูลนี้ คุณเพียงแค่นำเข้าไปยังเซสชัน:
Import-Module RemoteSQLServer
cmdlet ของโมดูล SQL ทั้งหมดจะพร้อมใช้งานโดยไม่ต้องสร้างการเชื่อมต่อที่ชัดเจนกับคอมพิวเตอร์ระยะไกล ลองสอบถามฐานข้อมูล MS SQL โดยใช้ Invoke-Sqlcmd คำสั่ง MSSQL ทั้งหมดจะพร้อมใช้งานจนกว่าคุณจะปิดคอนโซล PowerShell หรือนำโมดูลออก