0

我似乎无法理解如何在 powershell 的决赛桌上显示前一个命令对象。我知道我没有很好地解释自己,所以我会举一些例子:)

get-dhcpserverv4scope -computername server01

这将返回给我这样的东西:

范围 ID、子网掩码、名称

10.0.10.0,255.255.255.0,范围1

10.5.0.0,255.255.248.0,Scope2

现在,当我运行它时,我无法让 ScopeID 与第二个命令结果一起显示:

get-dhcpserverv4scope -computername server01 | ForEach-Object {get-dhcpserverv4optionvalue -computername server01 -scopeid $_.scopeid} | where {$_.OptionID -like "6"} | Select-Object Name, OptionID, Value

我显然可以从 get-dhcpserverv4optionvalue 中选择对象。如何获得最新的 Select-Object 中包含的 ScopeID?真的有可能吗?

谢谢

4

2 回答 2

1

未经测试,但这应该可以工作:

get-dhcpserverv4scope -computername server01 | ForEach-Object {
    $ScopeID = $_.ScopeID
    get-dhcpserverv4optionvalue -computername server01 -scopeid $_.scopeid
} | where {
    $_.OptionID -like "6"
}  | Select-Object Name, OptionID, Value, @{L='ScopeID';E={$ScopeID}}

我基本上将 ScopeID 值保存在 ForEach 语句中,然后通过在最后创建自定义属性来使用。

于 2015-09-28T11:08:29.623 回答
1

您可以使用 Add-Member 为返回的每个对象添加一个属性dhcpserverv4optionvalue

(get-dhcpserverv4optionvalue -computername server01 -scopeid $_.scopeid) | 
Add-Member -MemberType NoteProperty -Name "ScopeID " -Value $_.ScopeID -PassThru

完整的 oneliner 将是:

get-dhcpserverv4scope -computername server01 | ForEach-Object {(get-dhcpserverv4optionvalue -computername server01 -scopeid $_.scopeid) | Add-Member -MemberType NoteProperty -Name "ScopeID " -Value $_.ScopeID -PassThru} | where {$_.OptionID -like "6"} | Select-Object Name, OptionID, Value

于 2015-09-28T11:05:14.607 回答