Powershell& Office365:从Hashtable获取Set-msoluserlicense中的每个项目

时间:2015-07-13 15:14:20

标签: powershell

我正在尝试编写一个脚本,该脚本会更改我们每个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()无法正常工作。如何将散列表中的每个值都放入此命令中?

抱歉生锈的英语,我希望这个问题是不可理解的:)

1 个答案:

答案 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)始终引用管道中的当前项