【问题标题】:How can I reference the output of the first command when chaining PowerShell commands链接 PowerShell 命令时如何引用第一个命令的输出
【发布时间】:2014-07-20 11:20:42
【问题描述】:
如何从输出的命令链的第一部分提取一个值?例如:
Get-ActiveSyncDevice | Get-ActiveSyncDeviceStatistics | ft UserDeviceAgent,Identity -a
作为一个虚构的例子,假设列 UserDeviceAgent 在Get-ActiveSyncDevice 中可见,但是我无法让它出现在最终输出中
请注意:
我的问题具体是:如何在命令链中“反向引用”输出?
【问题讨论】:
标签:
powershell
activesync
【解决方案1】:
您需要将其传递到管道中,因此在您的脚本中,您必须将管道的第二部分转换为 ForEach,然后输出所需的属性和第二个命令的结果。
所以假设你的假设是这样的:
Get-ActiveSyncDevice | %{
$CurDev = Get-ActiveSyncDeviceStatistics
add-member -InputObject $CurDev -MemberType NoteProperty -Name UserDeviceAgent -Value $_.UserDeviceAgent
$CurDev
}| ft UserDeviceAgent, Identity -a
【解决方案2】:
您可以在第一个 CmdLet 上尝试-OutVariable,然后在最后在 Format-Table 中运行一个表达式:
Get-ActiveSyncDevice -OutVariable ASD | `
Get-ActiveSyncDeviceStatistics | `
Format-Table Identity, @{Name="UserDeviceAgent"; Expression ={$ASD.Item($ASD.Count-1).UserDeviceAgent}}