繁体   English   中英

Powershell - 将数组值作为参数传递

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM