Передача вывода powershell к идентификатору объекта - PullRequest
0 голосов
/ 18 февраля 2019

Возникают проблемы с командой powershell, я пытаюсь получить групповую лицензию для группы пользователей, но у меня возникают трудности с получением выходных данных одной команды в качестве входных данных для другой, и понимание было бы очень полезно

Я сначала попробовал

Get-MsolUser -All -UnlicensedUsersOnly -City "city name" | ForEach {Set-MsolUserLicense -AddLicenses "Account SKU"}

, затем я попытался

Get-MsolUser -All -UnlicensedUsersOnly -City "City Name" | select-object UserprincipalName | ForEach {Set-MsolUserLicense -Userprincipalname <String> -AddLicenses "Account SKU ID"}

Ответы [ 3 ]

0 голосов
/ 18 февраля 2019
Get-MsolUser -All -UnlicensedUsersOnly -City "City Name" |
ForEach {
    Set-MsolUserLicense -Userprincipalname $_.UserPrincipalName -AddLicenses "Account SKU ID"
}
0 голосов
/ 19 февраля 2019

Обычно , вам нужен только командлет ForEach-Object (чей псевдоним foreach):

  • дляцелевые командлеты, которые не поддерживают прямой ввод из конвейера [с предоставленными конкретными объектами]

  • для пользовательской обработки каждого объекта ввода с несколькими выражениями или командами в блок сценария ({ ... }), внутри которого автоматическая переменная $_ представляет находящийся под рукой объект ввода.

В частности , в вашем случае вам не нужен ForEach-Object вызов , и пока вы все еще можете заставить его работать с таким вызовом, как показано в TessellatingHeckler'sответ , он не только неоправданно многословен, но и значительно медленнее .

Get-MsolUser выводит объекты типа [Microsoft.Online.Administration.User] и *Параметр 1045 * -UserPrincipalName предназначен для неявного связывания с такими объектами через их свойство .UserPrincipalName, так что вы можете просто труба Get-MsolUser выход напрямую до Set-MsolUserLicense:

Get-MsolUser -All -UnlicensedUsersOnly -City "city name" |
  Set-MsolUserLicense -AddLicenses "Account SKU ID"
0 голосов
/ 18 февраля 2019

Внутри foreach вы можете получить доступ к текущему элементу, используя

$_

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

$_.PropertyYouNeed
...