Обычно , вам нужен только командлет 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"