我在PowerShell中见过很多下面的代码,但是它到底是做什么的呢?
$_
我在PowerShell中见过很多下面的代码,但是它到底是做什么的呢?
$_
当前回答
$_是自动变量$PSItem的别名(在PowerShell V3.0中引入;在这里找到使用信息),它表示来自管道的当前项。
关于自动变量的PowerShell (v6.0)在线文档在这里。
其他回答
$_是一个迭代前一个|(管道)传递的每个对象/元素的变量。
$_是一个$PSItem,它本质上是一个从另一个命令传入的对象。 例如,在我的工作站上运行Get-Volume将返回PSItems或对象的行
get-volume | select driveLetter,DriveType
driveLetter DriveType
----------- ---------
D Fixed
Fixed
C Fixed
A Removable
Driveletter和DriveType是属性 现在,您可以在使用$_.(propertyName)管道输出时使用这些项属性。(还要记住%是Foreach-Object的别名
$vol = get-volume | select driveLetter,DriveType
$vol | Foreach-Object {
if($_.DriveType -eq "Fixed") {
"$($_.driveLetter) is $($_.driveType)"}
else{
"$($_.driveLetter) is $($_.driveType)"
}
}
在Powershell 7中使用三元,我能够在使用来自Piped PSItem的属性时缩短逻辑
根据这个网站,这是一个参考,大部分是循环的。
$_(美元下划线) “这”牌。通常是指 项目在foreach循环中。 任务: 打印集合中的所有项目。 解决方案……| foreach{写主机 $ _}
这是管道行中当前值的变量,在Powershell 3和更新版本中称为$PSItem。
1,2,3 | %{ write-host $_ }
or
1,2,3 | %{ write-host $PSItem }
例如,在上面的代码中,数组中的每个值都会调用%{}块。$_或$PSItem变量将包含当前值。
$_是自动变量$PSItem的别名(在PowerShell V3.0中引入;在这里找到使用信息),它表示来自管道的当前项。
关于自动变量的PowerShell (v6.0)在线文档在这里。