ตรวจสอบไวยากรณ์พื้นฐานเพื่อแจกแจงวัตถุในไปป์ไลน์

เสร็จสมบูรณ์เมื่อ

ForEach-Objectคําสั่งทําการแจงนับ มีนามแฝงทั่วไปสองชื่อ: ForEach และ %. ชอบ Where-Objectมี ForEach-Object ไวยากรณ์แบบง่ายและไวยากรณ์ scriptblock

ในไวยากรณ์แบบง่าย คุณสามารถเรียกใช้เมธอดเดียวหรือเข้าถึงคุณสมบัติเดียวของอ็อบเจ็กต์ที่ไปป์ลงในคําสั่ง ตัวอย่างมีดังนี้:

Get-ChildItem –Path C:\Encrypted\  -File | ForEach-Object  -MemberName Encrypt

ด้วยไวยากรณ์นี้ คุณไม่รวมวงเล็บหลังชื่อสมาชิกถ้าสมาชิกเป็นเมธอด เนื่องจากไวยากรณ์แบบง่ายนี้มีไว้ให้สั้น คุณจึงมักจะสังเกตเห็นไวยากรณ์นั้นโดยไม่มี -MemberName ชื่อพารามิเตอร์ และคุณอาจสังเกตเห็นไวยากรณ์นั้นด้วยนามแฝงแทนชื่อคําสั่งแบบเต็ม ตัวอย่างเช่น ทั้งสองคําสั่งต่อไปนี้ดําเนินการแบบเดียวกัน:

Get-ChildItem –Path C:\Encrypted\ -File | ForEach Encrypt

Get-ChildItem –Path C:\Encrypted\ -File | % Encrypt

โน้ต

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

ข้อจํากัดของไวยากรณ์แบบง่าย

ไวยากรณ์แบบง่ายสามารถเข้าถึงคุณสมบัติหรือวิธีการเดียวเท่านั้น ไม่สามารถทําการเปรียบเทียบเชิงตรรกะที่ใช้ -and หรือ -orไม่สามารถตัดสินใจได้ และไม่สามารถเรียกใช้คําสั่งหรือโค้ดอื่นได้ ตัวอย่างเช่น คําสั่งต่อไปนี้ไม่ทํางาน และจะทําให้เกิดข้อผิดพลาด:

Get-Service | ForEach -MemberName Stop -and -MemberName Close

ไวยากรณ์แบบง่ายยังยอมรับพารามิเตอร์ทางเลือก -ArgumentList สําหรับการส่งอาร์กิวเมนต์ไปยังเมธอดที่ต้องมีการป้อนข้อมูล ตัวอย่างเช่น เมื่อต้องการแยกสตริงชื่อโมดูลบน . อักขระ:

"Microsoft.PowerShell.Core" | ForEach-Object -MemberName Split -ArgumentList "."

การใช้ชวเลขตําแหน่ง:

"Microsoft.PowerShell.Core" | foreach Split "."