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

วิธีนำเข้าโมดูล PowerShell เหมือนบอส


PowerShell เป็นภาษาสคริปต์ที่แข็งแกร่งอย่างน่าอัศจรรย์ แต่เพื่อปลดล็อกศักยภาพ คุณต้องรู้วิธีนำเข้าโมดูลที่ถูกต้อง

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

อ่านต่อเพื่อเสริมทักษะ PowerShell ของคุณและยกระดับเกมการเขียนสคริปต์ของคุณไปสู่อีกระดับ!

ข้อกำหนดเบื้องต้น

บทช่วยสอนนี้จะเป็นการสาธิตแบบลงมือปฏิบัติจริง เพื่อปฏิบัติตามให้แน่ใจว่าคุณมีระบบที่ติดตั้ง PowerShell บทช่วยสอนนี้ใช้ Windows 10 และ PowerShell 5.1 เป็นตัวอย่าง แต่คำสั่งเดียวกันควรใช้ได้กับ Windows และ PowerShell เวอร์ชันส่วนใหญ่

การนำเข้าโมดูลเดียว

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

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

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

Import-Module PSDiagnostics

ขอแนะนำให้นำเข้าโมดูลจากที่เก็บข้อมูลออนไลน์ผ่าน Install-Module cmdlet ทุกครั้งที่เป็นไปได้ cmdlet นี้ดูแลการขึ้นต่อกันและการจัดการเวอร์ชันสำหรับคุณ

เมื่อคุณนำเข้าโมดูลแล้ว คุณสามารถใช้ cmdlets หรือฟังก์ชันใดๆ ของโมดูลเพื่อช่วยคุณวินิจฉัยและแก้ไขปัญหาได้ Enable-PSTrace cmdlet เป็นเพียงตัวอย่างหนึ่งของ cmdlet ที่ได้รับจากโมดูล PSDiagnostics ซึ่งเปิดใช้งานการติดตามการวินิจฉัยใน PowerShell

ตอนนี้ ให้รันคำสั่ง Enable-PSTrace ต่อไปนี้เพื่อดำเนินการวินิจฉัยการติดตามและบันทึกผลลัพธ์ไปยัง -TraceFilePath ที่ระบุ (C:\\MyTrace.log) คำสั่งนี้ไม่ได้จัดเตรียมเอาต์พุตให้กับคอนโซล เนื่องจากผลลัพธ์ถูกกำหนดให้กับไฟล์แทน

Enable-PSTrace -TraceLevel 1 -TraceFilePath C:\MyTrace.log

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

การนำเข้าหลายโมดูลพร้อมกัน

การนำเข้าโมดูลเดียวทำงานได้ดี แต่เมื่อคุณจำเป็นต้องนำเข้าหลายโมดูลในคราวเดียวบ่อยครั้ง งานก็จะอยู่ในอำนาจของ Import-Module cmdlet

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

เรียกใช้คำสั่งด้านล่างเพื่อค้นหาหลายโมดูล (Dism, PowerShellGet, PSReadline) และโหลดลงในหน่วยความจำ เช่นเดียวกับการนำเข้าโมดูลเดียว คำสั่งนี้ไม่ได้จัดเตรียมเอาต์พุต

Import-Module Dism, PowerShellGet, PSReadline

การแสดงรายละเอียดการนำเข้าโมดูล

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

พารามิเตอร์ -Verbose เป็นตัวเลือกที่มีประโยชน์ที่คุณสามารถใช้ได้กับ PowerShell cmdlets และฟังก์ชันต่างๆ รวมถึง Import-Module cmdlet พารามิเตอร์นี้บอกให้ PowerShell แสดงข้อมูลโดยละเอียดเกี่ยวกับคำสั่งในขณะที่กำลังดำเนินการ ในทางกลับกัน คุณจะได้รับคำติชมอันมีค่าที่คุณสามารถนำไปใช้ในการแก้ไขปัญหาและแก้ไขข้อบกพร่องได้

เรียกใช้คำสั่งต่อไปนี้เพื่อนำเข้าโมดูล SmbShare โดยต่อท้ายพารามิเตอร์ -Verbose เพื่อพิมพ์รายละเอียดการนำเข้าโมดูล

Import-Module SmbShare -Verbose

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

ในกรณีนี้ โมดูล SmbShare จัดเตรียม cmdlets สำหรับจัดการการแชร์ SMB บนเครื่อง Windows cmdlet เหล่านี้รวมถึงแต่ไม่จำกัดเฉพาะ New-SmbShare (การสร้างการแชร์ใหม่) และ Remove-SmbShare (การลบการแชร์ที่มีอยู่)

การนำเข้าโมดูลอีกครั้งในเซสชันเดียวกัน

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

พารามิเตอร์ -Force นี้ช่วยให้คุณสามารถใช้ cmdlets และฟังก์ชันที่ได้รับจากโมดูลต่อไปได้โดยไม่ต้องปิดและเปิดเซสชัน PowerShell ของคุณอีกครั้ง

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

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

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

ตัวอย่างเช่น Get-SmbShare cmdlet ในโมดูลดั้งเดิมจะกลายเป็น Get-NewSmbShare ในโมดูลที่นำเข้าใหม่

Import-Module SmbShare -Force -Prefix New

ตอนนี้ให้รัน Get-Command ด้านล่างเพื่อดึงรายการ cmdlets และฟังก์ชันทั้งหมดที่มีให้โดยโมดูล SmbShare ที่เลือก (Select-Object) ตามชื่อ

Get-Command -Module SmbShare | Select-Object Name

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

การใช้แพ็คเกจ NuGet เพื่อนำเข้าโมดูล PowerShell ด้วยตนเอง

จนถึงตอนนี้ คุณได้นำเข้าโมดูลจาก PowerShell Gallery สำเร็จแล้ว แต่จะเกิดอะไรขึ้นถ้าโมดูลที่คุณกำลังมองหาไม่อยู่ที่นั่น?

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

หากต้องการนำเข้าโมดูลจากแพ็คเกจ NuGet คุณต้องดาวน์โหลด แยก และติดตั้งแพ็คเกจ NuGet ด้วยตนเองตามขั้นตอนต่อไปนี้:

1. ไปที่หน้าแกลเลอรี Azure PowerShell ของโมดูล Az.Automation

2. จากนั้น คลิกแท็บ ดาวน์โหลดด้วยตนเอง → ดาวน์โหลดไฟล์ nupkg แบบ raw เพื่อดาวน์โหลดแพ็คเกจ บทช่วยสอนนี้ใช้โมดูล Az.Automation 1.9.1 จากแกลเลอรี Azure PowerShell เป็นตัวอย่าง แต่ขั้นตอนเดียวกันนี้ใช้กับแพ็คเกจ NuGet อื่น ๆ

3. เมื่อดาวน์โหลดแล้ว ให้เรียกใช้คำสั่ง Unblock-File ด้านล่าง ซึ่งไม่มีเอาต์พุต แต่จะปลดบล็อกไฟล์ .nupkg ที่ดาวน์โหลดมา อย่าลืมเปลี่ยนเส้นทางของไฟล์ด้วยเส้นทางที่คุณดาวน์โหลดแพ็คเกจ

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

Unblock-File -Path C:\PSModules\az.automation.1.9.1.nupkg

4. ตอนนี้ ให้แตกไฟล์ .nupkg ที่ดาวน์โหลดมาไปยังโฟลเดอร์ในเครื่องของคุณ คุณอาจต้องใช้เครื่องมือบีบอัด/คลายการบีบอัด เช่น 7-zip หรือ WinRAR เพื่อแตกไฟล์แพ็คเกจ แพ็คเกจ NuGet เป็นไฟล์ ZIP ที่ประกอบด้วยชุดของไฟล์ที่ประกอบด้วยโมดูล

5. ลบเนื้อหาต่อไปนี้ออกจากโฟลเดอร์ที่แยกออกมา

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

_rels

โฟลเดอร์

Package

โฟลเดอร์

[Content_Types].xml

ไฟล์ XML

Az.Automation.nuspec

ไฟล์รายการ XML

6. เปลี่ยนชื่อโฟลเดอร์ที่แยกออกมาด้วยชื่อที่สื่อความหมายมากขึ้น เช่น az.automation เพื่อหลีกเลี่ยงข้อผิดพลาดที่อาจเกิดขึ้น อย่าลืมใช้อักษรตัวพิมพ์เล็กทั้งหมดและอย่าใช้อักขระพิเศษในชื่อ

7. จากนั้น เรียกใช้คำสั่ง $env:PSModulePath ด้านล่างเพื่อค้นหาเส้นทางของโมดูลเชลล์ปัจจุบันของคุณ คำสั่งนี้ส่งคืนรายการเส้นทางโมดูลเริ่มต้นทั้งหมดบนระบบของคุณ PowerShell ค้นหาเส้นทางเหล่านี้เพื่อโหลดโมดูลโดยอัตโนมัติเมื่อมีการระบุชื่อโมดูลในสคริปต์หรือคำสั่ง

$env:PSModulePath

จดเส้นทางไว้ เนื่องจากคุณจะต้องใช้เส้นทางเหล่านั้นในขั้นตอนต่อไปนี้

8. คัดลอกโฟลเดอร์ชื่อใหม่ (az.automation) ไปยังไดเร็กทอรีใดไดเร็กทอรีที่คุณจดบันทึกไว้ในขั้นตอนที่เจ็ด การทำเช่นนี้จะกำหนดขอบเขตของโมดูล (เฉพาะหรือผู้ใช้ทั้งหมด)

C:\Users\admin\Documents\WindowsPowerShell\Modules

ทำให้โมดูลพร้อมใช้งานสำหรับบัญชีผู้ใช้เฉพาะ (ผู้ดูแลระบบ) บทช่วยสอนนี้ใช้ตำแหน่งนี้เป็นตัวอย่าง

C:\Program Files\WindowsPowerShell\Modules

ทำให้โมดูลพร้อมใช้งานสำหรับบัญชีผู้ใช้ทั้งหมดในเครื่องของคุณ

9. ตอนนี้ให้รันคำสั่งด้านล่างเพื่อติดตั้งและนำเข้าโมดูล (az.automation) ลงในเซสชัน PowerShell ของคุณ อย่าลืมแทนที่ az.automation ด้วยชื่อจริงของโมดูลของคุณ

Import-Module -Name az.automation -Verbose

10. สุดท้าย ให้รันคำสั่ง Get-Module ต่อไปนี้เพื่อตรวจสอบว่านำเข้าโมดูล (az.automation) สำเร็จหรือไม่

Get-Module -Name az.automation

บางทีคุณอาจไม่ต้องการพึ่งพาการค้นหาอัตโนมัติ หากเป็นเช่นนั้น ให้ระบุตำแหน่งไฟล์ที่แน่นอน (C:\az.automation) เมื่อนำเข้าโมดูล

Import-Module -Name C:\az.automation -Verbose

บทสรุป

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

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

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