Olası Çoğalt:
What does $_ mean in powershell?
Zaten başkasının question and answer aynı konudaki gördük ama benim için soruya cevap vermez.
Ben Seç-Nesne, nerede-Nesne, ForEach-Nesne vb kullanmak ve örneğin bir komut bloğunu geçmesine biliyorum: Geçerli dizindeki tüm dosya adları dizisi döndürürdir | ForEach-Object { $_.Name }
.
Bu, C# 'in Uzantı seç yönteme benzer: sonra listedeki her bir eleman için çalıştırır Select yöntemi için bir işlev geçen çünkü
Dir.Select(x => x.Name)
Bununla birlikte, yukarıda C# kolayca anlaşılabilir.
Ancak PowerShell eşdeğeri:
dir | ForEach-Object { param($x) $x.Name }
şey döndürmez. Ancak, beklendiği gibi çalıştığı
& { param($x) $x.Name } (dir)[0]
çalışır.
Birisi, lütfen $ _ 'ın sihrini C#' ye aşina olan birisine açıklayabilir, ama betimleme dünyasını değil mi? Bu özel bir anahtar kelimedir? Sadece cmdlet'lere aktarılan komut bloklarında kullanılabilir mi? ForEach-Object (ya da başka bir cmdlet) 'a pipetlemeden birini nasıl çağırıyorsunuz? %
numaralı veriyi iletmek için bir yoldur. Bu başka bir sorunun tam kopyası değildir (bu sorunun ilk satırında söylediğim gibi). * Diğer * soru daha fazla veya daha az nasıl * * * ne * ne olduğunu soruyor * ne demek *. Bunun yinelenen bir cevap olmadığını söyleyebilirsin, çünkü kabul edilen cevaplar farklıdır. zdan'ın cevabı, bir şeyi doğrudan bir filtreye pipetlemenin mümkün olduğunu gösterirken, JaredPar'ın cevabı ForEach-Object'e pipetlenmiş bir şeyi gösteriyor. İkisi arasındaki fark, bir filtreyi doğrudan çağırıyor veya bir filtreyi başka bir filtreye geçiriyor. –