簡體   English   中英

將 powershell 的輸出傳送到對象 ID

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM