การติดตั้ง Windows PowerShell SDK
นำไปใช้กับ: Windows PowerShell 2.0, Windows PowerShell 3.0
หัวข้อต่อไปนี้อธิบายวิธีการติดตั้ง PowerShell SDK บน Windows เวอร์ชันต่างๆ
การติดตั้ง Windows PowerShell 3.0 SDK สำหรับ Windows 8 และ Windows Server 2012
Windows PowerShell 3.0 ได้รับการติดตั้งโดยอัตโนมัติพร้อมกับ Windows 8 และ Windows Server 2012 นอกจากนี้ คุณสามารถดาวน์โหลดและติดตั้งแอสเซมบลีอ้างอิงสำหรับ Windows PowerShell 3.0 โดยเป็นส่วนหนึ่งของ Windows 8 SDK แอสเซมบลีเหล่านี้ช่วยให้คุณสามารถเขียน cmdlets ผู้ให้บริการ และโปรแกรมโฮสต์สำหรับ Windows PowerShell 3.0 เมื่อคุณติดตั้ง Windows SDK สำหรับ Windows 8 แอสเซมบลี Windows PowerShell จะถูกติดตั้งโดยอัตโนมัติในโฟลเดอร์แอสเซมบลีอ้างอิง ใน \Program Files (x86)\Reference Assemblies\Microsoft\WindowsPowerShell\3.0 สำหรับข้อมูลเพิ่มเติม โปรดดูที่ไซต์ดาวน์โหลด Windows 8 SDK ตัวอย่างโค้ด Windows PowerShell ยังมีอยู่ในที่เก็บ powershell-sdk-samples
แอสเซมบลีอ้างอิง
แอสเซมบลีอ้างอิงถูกติดตั้งในตำแหน่งต่อไปนี้ตามค่าเริ่มต้น: c:\Program Files\Reference Assemblies\Microsoft\WindowsPowerShell\V1.0
บันทึก
ไม่สามารถโหลดรหัสที่คอมไพล์กับแอสเซมบลี Windows PowerShell 2.0 ลงในการติดตั้ง Windows PowerShell 1.0 อย่างไรก็ตาม รหัสที่คอมไพล์กับแอสเซมบลี Windows PowerShell 1.0 สามารถโหลดลงในการติดตั้ง Windows PowerShell 2.0 ได้
ตัวอย่าง
ตัวอย่างรหัสได้รับการติดตั้งในตำแหน่งต่อไปนี้ตามค่าเริ่มต้น: C:\Program Files\Microsoft SDKs\Windows\v7.0\Samples\sysmgmt\WindowsPowerShell\ ส่วนต่อไปนี้จะให้คำอธิบายโดยย่อว่าแต่ละตัวอย่างทำอะไรได้บ้าง
ตัวอย่าง Cmdlet
- GetProcessSample01 - แสดงวิธีการเขียน cmdlet อย่างง่ายที่รับกระบวนการทั้งหมดบนเครื่องคอมพิวเตอร์
- GetProcessSample02 - แสดงวิธีการเพิ่มพารามิเตอร์ใน cmdlet cmdlet ใช้ชื่อกระบวนการอย่างน้อยหนึ่งชื่อและส่งกลับกระบวนการที่ตรงกัน
- GetProcessSample03 - แสดงวิธีการเพิ่มพารามิเตอร์ที่ยอมรับอินพุตจากไปป์ไลน์
- GetProcessSample04 - แสดงวิธีจัดการกับข้อผิดพลาดที่ไม่สิ้นสุด
- GetProcessSample05 - แสดงรายการวิธีการแสดงรายการกระบวนการที่ระบุ
- SelectObject - แสดงวิธีการเขียนตัวกรองเพื่อเลือกเฉพาะบางวัตถุเท่านั้น
- SelectString - แสดงวิธีการค้นหาไฟล์ตามรูปแบบที่ระบุ
- StopProcessSample01 - แสดงวิธีการใช้พารามิเตอร์ PassThru และวิธีการขอคำติชมของผู้ใช้โดยการเรียกเมธอด shouldProcess และ shouldContinue ผู้ใช้ระบุพารามิเตอร์ PassThru เมื่อพวกเขาต้องการบังคับให้ cmdlet ส่งกลับวัตถุ
- StopProcessSample02 - แสดงวิธีหยุดกระบวนการเฉพาะ
- StopProcessSample03 - แสดงวิธีการประกาศนามแฝงสำหรับพารามิเตอร์ และวิธีการสนับสนุนไวด์การ์ด
- StopProcessSample04 - แสดงวิธีการประกาศชุดพารามิเตอร์ วัตถุที่ cmdlet ใช้เป็นอินพุต และวิธีการระบุชุดพารามิเตอร์เริ่มต้นที่จะใช้
ตัวอย่างระยะไกล
- RemoteRunspace01 - แสดงวิธีสร้าง runspace ระยะไกลที่ใช้เพื่อสร้างการเชื่อมต่อระยะไกล
- RemoteRunspacePool01 - แสดงวิธีการสร้างพูล runspace ระยะไกล และวิธีการรันหลายคำสั่งพร้อมกันโดยใช้พูลนี้
- Serialization01 - แสดงวิธีดูคลาส .NET ที่มีอยู่ และตรวจสอบให้แน่ใจว่าข้อมูลจากคุณสมบัติสาธารณะที่เลือกของคลาสนี้ได้รับการเก็บรักษาไว้ตลอดทั้งการทำให้เป็นอนุกรม/ดีซีเรียลไลซ์
- การทำให้เป็นอนุกรม02 - แสดงวิธีการดูคลาส .NET ที่มีอยู่ และตรวจสอบให้แน่ใจว่าข้อมูลจากอินสแตนซ์ของคลาสนี้ได้รับการเก็บรักษาไว้ในการทำให้เป็นอนุกรม/ดีซีเรียลไลซ์ เมื่อข้อมูลไม่พร้อมใช้งานในคุณสมบัติสาธารณะของคลาส
- การทำให้เป็นอนุกรม03 - แสดงวิธีการดูคลาส .NET ที่มีอยู่ และตรวจสอบให้แน่ใจว่าอินสแตนซ์ของคลาสนี้และคลาสที่ได้รับนั้นถูกดีซีเรียลไลซ์ (เติมน้ำใหม่) ลงในอ็อบเจ็กต์ .NET ที่ถ่ายทอดสด
ตัวอย่างเหตุการณ์
- Event01 - แสดงวิธีการสร้าง cmdlet สำหรับการลงทะเบียนเหตุการณ์โดยได้มาจาก ObjectEventRegistrationBase
- Event02 - แสดงวิธีแสดงวิธีรับการแจ้งเตือนเหตุการณ์ Windows PowerShell ที่สร้างขึ้นบนคอมพิวเตอร์ระยะไกล ใช้เหตุการณ์ PSEventReceived ที่เปิดเผยผ่านคลาส Runspace
ตัวอย่างแอปพลิเคชันโฮสต์
- Runspace01 - แสดงวิธีใช้คลาส PowerShell เพื่อเรียกใช้ cmdlet
Get-Processแบบซิงโครนัส cmdletรับกระบวนการส่งกลับวัตถุกระบวนการสำหรับแต่ละกระบวนการที่ทำงานบนคอมพิวเตอร์เฉพาะที่ - Runspace02 - แสดงวิธีใช้คลาส PowerShell เพื่อเรียกใช้ cmdlets
Get-ProcessและSort-ObjectแบบซิงโครนัสGet-Processcmdlet ส่งคืนออบเจ็กต์กระบวนการสำหรับแต่ละกระบวนการที่ทำงานบนเครื่องคอมพิวเตอร์ และSort-Objectจะเรียงลำดับออบเจ็กต์ตามคุณสมบัติ Id ผลลัพธ์ของคำสั่งเหล่านี้จะแสดงขึ้นโดยใช้ตัวควบคุม DataGridView - Runspace03 - แสดงวิธีใช้คลาส PowerShell เพื่อเรียกใช้สคริปต์พร้อมกัน และวิธีการจัดการกับข้อผิดพลาดที่ไม่สิ้นสุด สคริปต์ได้รับรายการชื่อกระบวนการแล้วดึงข้อมูลกระบวนการเหล่านั้น ผลลัพธ์ของสคริปต์ รวมถึงข้อผิดพลาดที่ไม่ยุติซึ่งเกิดขึ้นเมื่อเรียกใช้สคริปต์ จะแสดงในหน้าต่างคอนโซล
- Runspace04 - แสดงวิธีใช้คลาส PowerShell เพื่อรันคำสั่ง และวิธีการตรวจจับข้อผิดพลาดในการยุติที่เกิดขึ้นเมื่อรันคำสั่ง มีการรันคำสั่งสองคำสั่ง และคำสั่งสุดท้ายถูกส่งผ่านอาร์กิวเมนต์พารามิเตอร์ที่ไม่ถูกต้อง เป็นผลให้ไม่มีการส่งคืนออบเจ็กต์และมีข้อผิดพลาดในการยกเลิกเกิดขึ้น
- Runspace05 - แสดงวิธีการเพิ่ม snap-in ให้กับวัตถุ InitialSessionState เพื่อให้ cmdlet ของ snap-in พร้อมใช้งานเมื่อเปิด runspace สแน็ปอินจัดเตรียม Get-Proc cmdlet (กำหนดโดยตัวอย่าง GetProcessSample01) ที่ทำงานพร้อมกันโดยใช้วัตถุ PowerShell
- Runspace06 - แสดงวิธีการเพิ่มโมดูลให้กับอ็อบเจ็กต์ InitialSessionState เพื่อให้โมดูลถูกโหลดเมื่อเปิด runspace โมดูลจัดเตรียม Get-Proc cmdlet (กำหนดโดยตัวอย่าง GetProcessSample02) ที่ทำงานพร้อมกันโดยใช้วัตถุ PowerShell
- Runspace07 - แสดงวิธีการสร้าง runspace จากนั้นใช้ runspace นั้นเพื่อเรียกใช้ cmdlets สองรายการพร้อมกันโดยใช้วัตถุ PowerShell
- Runspace08 - แสดงวิธีการเพิ่มคำสั่งและอาร์กิวเมนต์ในไปป์ไลน์ของออบเจ็กต์ PowerShell และวิธีการรันคำสั่งพร้อมกัน
- Runspace09 - แสดงวิธีเพิ่มสคริปต์ในไปป์ไลน์ของออบเจ็กต์ PowerShell และวิธีการเรียกใช้สคริปต์แบบอะซิงโครนัส เหตุการณ์ถูกใช้เพื่อจัดการเอาต์พุตของสคริปต์
- Runspace10 - แสดงวิธีการสร้างสถานะเซสชันเริ่มต้นเริ่มต้น วิธีเพิ่ม cmdlet ให้กับ InitialSessionState วิธีสร้างรันสเปซที่ใช้สถานะเซสชันเริ่มต้น และวิธีการเรียกใช้คำสั่งโดยใช้วัตถุ PowerShell
- Runspace11 - แสดงวิธีใช้คลาส ProxyCommand เพื่อสร้างคำสั่งพร็อกซีที่เรียก cmdlet ที่มีอยู่ แต่จำกัดชุดของพารามิเตอร์ที่มีอยู่ จากนั้นคำสั่งพร็อกซีจะถูกเพิ่มในสถานะเซสชันเริ่มต้นที่ใช้เพื่อสร้างรันสเปซที่มีข้อจำกัด ซึ่งหมายความว่าผู้ใช้สามารถเข้าถึงฟังก์ชันการทำงานของ cmdlet ผ่านคำสั่งพร็อกซีเท่านั้น
- PowerShell01 - แสดงวิธีสร้างรันสเปซที่มีข้อจำกัดโดยใช้ออบเจ็กต์ InitialSessionState
- PowerShell02 - แสดงวิธีใช้พูลรันสเปซเพื่อรันหลายคำสั่งพร้อมกัน
ตัวอย่างโฮสต์
- Host01 - แสดงวิธีการใช้แอปพลิเคชันโฮสต์ที่ใช้โฮสต์แบบกำหนดเอง ในตัวอย่างนี้ รันสเปซจะถูกสร้างขึ้นโดยใช้โฮสต์แบบกำหนดเอง จากนั้น PowerShell API จะถูกใช้เพื่อเรียกใช้สคริปต์ที่เรียก
exitแอปพลิเคชันโฮสต์จะดูผลลัพธ์ของสคริปต์และพิมพ์ผลลัพธ์ออกมา - Host02 - แสดงวิธีเขียนแอปพลิเคชันโฮสต์ที่ใช้รันไทม์ Windows PowerShell พร้อมกับการใช้งานโฮสต์แบบกำหนดเอง แอปพลิเคชันโฮสต์ตั้งค่าวัฒนธรรมโฮสต์เป็นภาษาเยอรมัน เรียกใช้ cmdlet
Get-Processและแสดงผลลัพธ์ตามที่คุณต้องการเห็นโดยใช้ pwrsh.exe จากนั้นพิมพ์ข้อมูลและเวลาปัจจุบันเป็นภาษาเยอรมัน - Host03 - แสดงวิธีสร้างแอปพลิเคชันโฮสต์บนคอนโซลแบบโต้ตอบที่อ่านคำสั่งจากบรรทัดคำสั่ง ดำเนินการคำสั่ง จากนั้นแสดงผลลัพธ์ไปยังคอนโซล
- Host04 - แสดงวิธีสร้างแอปพลิเคชันโฮสต์บนคอนโซลแบบโต้ตอบที่อ่านคำสั่งจากบรรทัดคำสั่ง ดำเนินการคำสั่ง จากนั้นแสดงผลลัพธ์ไปยังคอนโซล แอปพลิเคชันโฮสต์นี้ยังรองรับการแสดงพร้อมท์ที่อนุญาตให้ผู้ใช้สามารถระบุตัวเลือกได้หลายตัวเลือก
- Host05 - แสดงวิธีสร้างแอปพลิเคชันโฮสต์บนคอนโซลแบบโต้ตอบที่อ่านคำสั่งจากบรรทัดคำสั่ง ดำเนินการคำสั่ง จากนั้นแสดงผลลัพธ์ไปยังคอนโซล แอปพลิเคชันโฮสต์นี้ยังสนับสนุนการโทรไปยังคอมพิวเตอร์ระยะไกลโดยใช้ cmdlet ของ
Enter-PsSessionและExit-PsSession - Host06 - แสดงวิธีสร้างแอปพลิเคชันโฮสต์บนคอนโซลแบบโต้ตอบที่อ่านคำสั่งจากบรรทัดคำสั่ง ดำเนินการคำสั่ง จากนั้นแสดงผลลัพธ์ไปยังคอนโซล นอกจากนี้ ตัวอย่างนี้ยังใช้ Tokenizer API เพื่อระบุสีของข้อความที่ผู้ใช้ป้อน
ตัวอย่างผู้ให้บริการ
AccessDBProviderSample01 - แสดงวิธีการประกาศคลาสผู้ให้บริการที่ได้รับโดยตรงจากคลาส CmdletProvider รวมไว้ที่นี่เพื่อความสมบูรณ์เท่านั้น
AccessDBProviderSample02 - แสดงวิธีการเขียนทับวิธีการ NewDrive และ RemoveDrive เพื่อรองรับการเรียกไปยัง cmdlets
New-PSDriveและRemove-PSDriveคลาสตัวให้บริการในตัวอย่างนี้ได้มาจากคลาส DriveCmdletProviderAccessDBProviderSample03 - แสดงวิธีการเขียนทับเมธอด GetItem และ SetItem เพื่อรองรับการเรียกไปยัง cmdlets
Get-ItemและSet-Itemคลาสผู้ให้บริการในตัวอย่างนี้ได้มาจากคลาสItemCmdletProviderAccessDBProviderSample04 - แสดงวิธีการเขียนทับวิธีคอนเทนเนอร์เพื่อรองรับการเรียกไปยัง
Copy-Item,Get-ChildItem,New-Itemและลบรายการcmdlet วิธีการเหล่านี้ควรถูกนำมาใช้เมื่อที่เก็บข้อมูลมีรายการที่เป็นคอนเทนเนอร์ คอนเทนเนอร์คือกลุ่มของรายการย่อยภายใต้รายการหลักทั่วไป คลาสผู้ให้บริการในตัวอย่างนี้ได้มาจากคลาสItemCmdletProviderAccessDBProviderSample05 - แสดงวิธีการเขียนทับวิธีคอนเทนเนอร์เพื่อรองรับการเรียกไปยัง cmdlets
Move-ItemและJoin-Pathวิธีการเหล่านี้ควรใช้เมื่อผู้ใช้ต้องการย้ายรายการภายในคอนเทนเนอร์ และหากที่เก็บข้อมูลมีคอนเทนเนอร์ที่ซ้อนกัน คลาสผู้ให้บริการในตัวอย่างนี้ได้มาจากคลาส NavigationCmdletProviderAccessDBProviderSample06 - แสดงวิธีการเขียนทับวิธีการเนื้อหาเพื่อรองรับการเรียกไปยัง cmdlets
Clear-Content,Get-ContentและSet-Contentวิธีการเหล่านี้ควรถูกนำมาใช้เมื่อผู้ใช้ต้องการจัดการเนื้อหาของรายการในที่เก็บข้อมูล คลาสผู้ให้บริการในตัวอย่างนี้ได้มาจากคลาส NavigationCmdletProvider และใช้อินเทอร์เฟซ IContentCmdletProvider