[英]Piping the output of powershell to the object id
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"}
通常,您只需要ForEach-Object
cmdlet(其內置別名是foreach
):
對於不支持管道直接輸入的目標 cmdlet [使用提供的特定對象]
用於在腳本塊( { ... }
) 中使用多個表達式或命令自定義處理每個輸入對象,其中自動變量$_
表示手頭的輸入對象。
具體而言,在你的情況,你不需要ForEach-Object
調用,而你仍然可以把它與這樣的工作隨叫隨到,如圖TessellatingHeckler的答案,它不僅是不必要的冗長,但也顯著慢。
Get-MsolUser
輸出[Microsoft.Online.Administration.User]
類型的對象,並且Set-MsolUserLicense
的-UserPrincipalName
參數旨在通過其.UserPrincipalName
屬性隱式綁定到此類對象,以便您可以簡單地通過管道Get-MsolUser
輸出直接到Set-MsolUserLicense
:
Get-MsolUser -All -UnlicensedUsersOnly -City "city name" |
Set-MsolUserLicense -AddLicenses "Account SKU ID"
在 foreach 內部,您可以使用訪問當前元素
$_
因此,您可以使用以下語法訪問當前元素的任何屬性:
$_.PropertyYouNeed
Get-MsolUser -All -UnlicensedUsersOnly -City "City Name" |
ForEach {
Set-MsolUserLicense -Userprincipalname $_.UserPrincipalName -AddLicenses "Account SKU ID"
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.