[英]Powershell - Passing Array Value as a Parameter
Powershell新手这里。 试图找出为什么不能在我的表达式中使用 $_ 值:
$ServerList = @(
'Server1',
'Server2',
'Server3'
)
$ServerList | ForEach-Object (get-cswindowsservice -Name "rtcpdpcore" -Computer $_ | Select-object @{Label = "ServerName";Expression={$_}}, Status, Displayname | format-table -autosize -wrap)
出现错误:Get-CsWindowsService:无法验证参数“ComputerName”上的参数。 参数为 null 或为空。 提供一个不是 null 或空的参数,然后重试该命令。
但是这对 output 的数组值好吗?
$ServerList = @(
'Server1',
'Server2',
'Server3'
)
$ServerList | ForEach-Object {write-output $_}
为什么在第一个示例中是 '$_' null ? 但在第二个填充?
谢谢
将括号从()
更改为{}
后,您遇到的问题是$_
的 scope 在通过管道时会发生变化,因此Select-Object
上的$_
是Get-CSWindowsService
,而不是ForEach-Object
。 尝试一个小的重构:
$ServerList | `
ForEach-Object {
$serverName = $_
Get-CSWindowsservice -Name "rtcpdpcore" -Computer $serverName | `
Select-object @{Label = "ServerName";Expression={$serverName}}, Status, Displayname | `
Format-Table -autosize -wrap
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.