PowerShell. Скрытие и сохранение данных в конвейерах

Небольшая статья на тему скрытия и сохранения данных внутри конвейеров (pipeline)

Рассмотрим несколько вариантов, каждый из которых подходит под свои задачи.

Свойство DefaultDisplayPropertySet

Допустим нам нужно скрыть часть свойств в выводе окна Out-GridView, однако при этом нужно передать «скрытые» свойства дальше по конвейеру.

Реализация следующая:

Get-ChildItem ".\FileStore" |
Select-Object Name, PSPath |
Add-Member -MemberType MemberSet `
           -Name PSStandardMembers `
           -Value ([System.Management.Automation.PSPropertySet]::new(
                      'DefaultDisplayPropertySet',
                      [string[]]('Name')
                  )) `
           -PassThru |
Out-GridView -PassThru -Title "Quick Notes" |
Get-Content | Set-Clipboard

Источник

Параметр PipelineVariable

Параметр PipelineVariable позволяет сохранить в переменную «оригинальное значение» и передаст его дальше по конвейеру неизменным. Смотрим пример ниже:

Get-ADUser <username> -PipelineVariable user -Properties memberof | 
    Select-Object -ExpandProperty memberof | 
        Select-Object @{ n = 'Name'; e = { $user.Name }}, @{ n = 'MemberOf' ; e = { $PSItem -replace 'CN=|,(OU|CN)=.+' }}