Ссылка на объект PowerShell в конвейере - PullRequest
0 голосов
/ 17 октября 2019

Я борюсь с прохождением объектов в конвейере. Я обошел проблему преобразования их в строки, но это не самый эффективный способ сделать что-либо.

$mapi = (Get-CASMailbox -Identity $user | fl mapiEnabled | Out-String ).Split(':')[-1]
if ($mapi -match "True") {
   Set-CASMailbox -Identity $User -MAPIEnabled $false
}   

Я действительно хочу получить прямой доступ к возвращенному bool вместо преобразования его в строку

Аналогично, я использовал ниже, чтобы сделать цикл for:

$groups = (Get-DistributionGroup | fl name | Out-String -Stream ).Replace("Name : ", "")
foreach ($group in $groups) {
    echo $group
}

Оба примера взяты из Exchange Online, ниже еще один универсальный:

if (((Get-NetIPInterface -InterfaceAlias $adapters -AddressFamily Ipv4 | fl dhcp | Out-String -Stream ).Trim() -ne "").Replace("Dhcp : ","") -match "Disabled") {
    echo disabled
}

1 Ответ

4 голосов
/ 17 октября 2019

Я просто хотел потратить секунду, чтобы посмотреть, смогу ли я помочь вам понять, что происходит в конвейере и почему комментарии @ mathiasR.Jessen и @AdminOfThings помогут вам.

$mapi = (Get-CASMailbox -Identity $user | fl mapiEnabled | Out-String ).Split(':')[-1]

Разбить этоэта строка кода делает:

Get-CASMailbox собирается вернуть объект с несколькими свойствами. Format-List (fl) по-прежнему будет возвращать объект, но теперь он отформатирован, поэтому он менее податлив. Out-String собирается преобразовать этот форматированный список в одну строку. Помещение этих команд в круглые скобки запускает их и позволяет вам выполнить метод для результирующего строкового объекта.

Используя ту же концепцию, мы можем использовать круглые скобки для выполнения команды Get-CASMailbox и получения единственного свойства, которым вы являетесьищу:

$mapi = (Get-CASMailbox -Identity $user).mapiEnabled

Теперь мы установили $ mapi в значение свойства mapiEnabled, возвращаемое командой.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...