【问题标题】:Powershell - Select-Objects from previous commandsPowershell - 从以前的命令中选择对象
【发布时间】:2015-09-28 10:43:55
【问题描述】:

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

get-dhcpserverv4scope -computername server01

这会给我这样的回报:

范围ID、子网掩码、名称

10.0.10.0,255.255.255.0,Scope1

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-dhcpserverv4 选项值中选择对象。如何获得最新的 Select-Object 中包含的 ScopeID? 真的可以吗?

谢谢

【问题讨论】:

    标签: powershell dhcp scope-id


    【解决方案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

    【讨论】:

    • 要查看最后一个对象的成员,您可以将最后一个 select-object 替换为 get-member。然后您将查看该属性是否存在。如果存在,那么它的值可能为 null。
    【解决方案2】:

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

    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 语句中,然后通过在末尾创建自定义属性来使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-10-29
      • 1970-01-01
      • 2021-11-30
      • 1970-01-01
      • 1970-01-01
      • 2020-11-14
      • 2020-07-03
      相关资源
      最近更新 更多