我正在尝试编写一个脚本,该脚本会更改我们每个Office365用户的每个许可证。让我烦恼的是你必须使用" UserPrincipalName" Set-MsOlUserLicense命令的选项。所以我试图用哈希表作弊
到目前为止我所拥有的:
Import-module msonline
$cred = Get-Credential
connect-msolservice -credential $cred
$UserPrincipal = @{}
Import-csv Z:\Powershell-Scripts\PS-lists\MSOLUserPrincipalNames.csv | ForEach-Object {Set-msolUserLicense -UserPrincipalName $UserPrincipal.Get_Item() -AddLicenses "syndication-account:ENTERPRISEPACK" -RemoveLicense "syndication-account:STANDARDPACK"}
-UserPrincipalName.GetItem()无法正常工作。如何将散列表中的每个值都放入此命令中?
抱歉生锈的英语,我希望这个问题是不可理解的:)
答案 0 :(得分:1)
假设MSOLUserPrincipalNames.csv
包含一个标题为UserPrincipalName
的列,您可以在$_.UserPrincipalName
scriptblock中使用ForEach-Object
引用该属性的值:
Import-Csv Z:\Powershell-Scripts\PS-lists\MSOLUserPrincipalNames.csv | ForEach-Object {
Set-msolUserLicense -UserPrincipalName $_.UserPrincipalName -AddLicenses "syndication-account:ENTERPRISEPACK" -RemoveLicense "syndication-account:STANDARDPACK"
}
$_
变量(也称为$PSItem
)始终引用管道中的当前项