Я хочу объединить команды Get-user
и get-casmailbox
так что я могу получить "Company" из первого вывода и "ActiveSyncStatus" из последнего в один вывод.
Я также понимаю, что мог бы написать явный цикл, генерирующий желаемые результаты, но я думаю, что более компактный синтаксис возможен с использованием $ _. команда (или подобное)
Может ли кто-нибудь показать мне команду, которая демонстрирует Get-CasMailbox, который передает вторую команду с помощью $ _. свойство, и, наконец, имеет ли объект select некоторую комбинацию атрибутов между командами?
Причина, по которой я спрашиваю, заключается в том, что мне часто приходится соединять команды таким образом, а циклы for являются явными и сложными для копирования и вставки службы поддержки. Я бы предпочел иметь одну командную строку, которую они могут вставить.
Каждый раз, когда вы используете Write-Host
Джеффри Сновер убивает щенка. Или это Дон Джонс? Может быть, они оба вместе убьют щенка на какой-то церемонии. Это было бы странно.
[PS] C:\>"User1", "User2" | % { [PSObject]@{Name=$_; Company=$(Get-User $_).Company; ActiveSyncEnabled=$(Get-CASMailbox $_).ActiveSyncEnabled} }
Name Value
---- -----
Name User1
Company Contoso
ActiveSyncEnabled True
Name User2
Company Woodgrove
ActiveSyncEnabled True
Изменить: Или это:
[PS] C:\>Foreach($_ In Get-Mailbox) { [PSObject]@{Name=$_; Company=$(Get-User $_).Company; ActiveSyncEnabled=$(Get-CASMailbox $_).ActiveSyncEnabled} }
Командлеты Exchange застают вас врасплох тем, как они обрабатывают ввод конвейера.
Если вы хотите, чтобы выходные объекты выглядели менее скученными, вы можете добавить Format-Table
в конце, прямо перед финалом }
... однако помните, что Format-*
почти так же плохо, как Write-Host
, в том смысле, что он имеет возможность нарушить объектность вывода, поэтому форматируйте вывод только как последнее, что вы собираетесь делать. Не форматируйте вывод, а затем попытайтесь передать его другому командлету.
Я никогда не использовал PowerShell
с участием Exchange
, и поскольку я не знаком с этими командлетами и их выходными данными, я считаю, что этот лайнер близок к тому, что вы ищете:
Get-User | foreach { $a = $_.property1; $b = Get-CASMailbox -SomeProperty $_.property2; Write-Host "$a | $b" }