Powershell - Select-Objects из предыдущих команд

Я не могу понять, как отобразить объект предыдущей команды на финальной таблице в powershell. Я понимаю, что не очень хорошо объясняю себя, поэтому я пойду с примерами:)

get-dhcpserverv4scope -computername server01

Это вернет мне что-то вроде этого:

ScopeId, Маска_подсеть, Имя

10.0.10.0,255.255.255.0, Scope1

10.5.0.0,255.255.248.0, обл2

Теперь, когда я запускаю это вместо этого, я не могу отобразить ScopeID с результатами второй команды:

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

Я, очевидно, могу выбрать объекты из значения get-dhcpserverv4option. Как я могу также получить ScopeID, включенный в последнюю версию Select-Object? Это действительно возможно?

Спасибо

2 ответа

Решение

Вы можете использовать Add-Member для добавления свойства к каждому объекту, возвращаемому dhcpserverv4optionvalue:

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

Полный вкладчик будет:

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

Не проверено, но это должно работать:

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, а затем использую его в конце, создавая пользовательское свойство в конце.

Другие вопросы по тегам