PowerShell - เปลี่ยนชื่อ PipelineVariable


2

ใน PowerShell คุณสามารถเปลี่ยนชื่อของตัวแปรที่ใช้เป็นรายการในบล็อกวนซ้ำเช่น:

dir -recurse *.snippet -OutVariable snippets

$snippets | Where-Object -PipelineVariable fn { $fn.Length -ge 6000 } | select FullName

รหัสนั้นใช้ไม่ได้ แต่คุณได้รับแนวคิด ฉันคิดว่ามันไม่ทำงานเพราะ-PipelineVariableจะต้องระบุอาร์กิวเมนต์ใน CmdLet ก่อนหน้า

คำถามของฉันคือ CmdLet ที่ฉันใช้เพื่อไพพ์เนื้อหาของ$snippets?

นั่นคือเมื่อฉันรัน$snippetsมันโดยปริยายเพียงแค่กระจายเนื้อหาออกไปป์ไลน์ แต่ CmdLet ทำอะไรได้บ้าง

ฉันได้ลองมาหลายครั้งแล้วและดูเหมือนว่าจะส่งออกอาร์เรย์บนหน้าจอ แต่เมื่อส่งเข้าไปในWhere-Objectส่วนคำสั่งที่ใช้งานไม่ได้มันก็เหมือนกับการดูที่อินสแตนซ์วัตถุอาร์เรย์ด้านนอกไม่ใช่แต่ละรายการ

ลุค

คำตอบ:


2

ฉันจะบอกว่ามันเหมาะสมที่จะใช้-PipelineVariableถ้าคุณมีมากกว่าหนึ่งขั้นตอนในไปป์ไลน์เพื่อรักษาวัตถุจากองค์ประกอบไปป์ก่อนหน้า

อย่างไรก็ตาม: ในกรณีนี้ฉันจะใช้Write-Output:

Write-Output $snippets -PipelineVariable fn | Where-Object { $fn.Length -ge 6000 }

Write-Output"ส่งวัตถุที่ระบุไปยังคำสั่งถัดไปในไปป์ไลน์" - ง่ายเมื่อคุณรู้ Out-Defaultที่ใกล้ที่สุดที่ผมได้รับคือ ขอบคุณและฉันขอให้คุณPipelineVariableเข้าใจว่ามันเป็นแบบฝึกหัดการเรียนรู้มากกว่าความต้องการที่ถูกต้องตามกฎหมาย
ลุค Puplett
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.