$_
- это переменная, создаваемая системой, обычно внутри блочных выражений, на которые ссылаются командлеты, которые используются с конвейером, например Where-Object
и ForEach-Object
.
Но его можно использовать и в других типах выражений, например, с Select-Object
в сочетании со свойствами выражений. Get-ChildItem | Select-Object @{Name="Name";Expression={$_.Name}}
. В этом случае $_
представляет передаваемый элемент, но может существовать несколько выражений.
На него также может ссылаться валидация пользовательских параметров, где для проверки значения используется блок скрипта. В этом случае $_
представляет значение параметра, полученное из вызова.
Ближайшая аналогия c # и java - это выражение lamda. Если вы разберетесь с PowerShell до основ, то все будет блоком скрипта, включая файл скрипта a, функции и командлеты. Вы можете определить свои собственные параметры, но в некоторых случаях для вас создается система, которая представляет элемент ввода для обработки / оценки . В этих ситуациях автоматической переменной является $_
.