尝试通过Powershell在Office 365中设置用户许可

时间:2017-04-14 12:56:50

标签: office365 powershell-v2.0

我有一个Office 365租户,其中包含多个许可计划,我试图通过Powershell批量停用E3计划的某些功能。

这就是我所拥有的:

$ENTERPRISEPACK=New-MsolLicenseOptions -AccountSkuId companyname:ENTERPRISEPACK -DisabledPlans "FLOW_0365_P2", "POWERAPPS_0365_P2"

Import-CSV c:\scripts\inputfiles\e3users.csv | foreach-object -process { Set-MsolUserLicense -UserPrincipalName $_.upn -LicenseOptions $ENTERPRISEPACK -Verbose}

我遇到的问题是,我可以验证用户是否存在,并将CSV导入为有效,但我的CSV中的每个用户都收到错误:

Set-MsolUserLicense : User Not Found.  User: .

这非常令人沮丧,因为我只想禁用所有E3用户的功能(这些功能将在我的CSV中),并且当您运行它时此命令有效:

$ENTERPRISEPACK=New-MsolLicenseOptions -AccountSkuId companyname:ENTERPRISEPACK -DisabledPlans "FLOW_0365_P2", "POWERAPPS_0365_P2"

Set-MsolUserLicense -UserPrincipalName testuser.here@domain.com -LicenseOptions $ENTERPRISEPACK -Verbose

正如您所看到的,这里的不同之处在于我使用一个专门输入的用户名来运行它。

对我来说,我能够管道输入并运行循环,这是有道理的,但我错过了一些东西。

请帮帮忙?

1 个答案:

答案 0 :(得分:0)

我能够自己解决这个问题。

令人沮丧的是,第1号是" Set-MSOLUserLicense"仅接受文本文件中UPN的管道输入,而不接受CSV。

其次,由于一些奇怪的原因,我尝试禁用的ServicePlans在使用双引号时似乎无法被识别。

这就是我最终的结果:

$ENTERPRISEPACK=New-MsolLicenseOptions -AccountSkuId company:ENTERPRISEPACK -DisabledPlans 'FLOW_O365_P2','POWERAPPS_O365_P2','RMS_S_ENTERPRISE'

Get-Content "C:\scripts\inputfiles\E3users.txt" | foreach {Set-MsolUserLicense -UserPrincipalName $_ -LicenseOptions $ENTERPRISEPACK

而且,由于-Verbose开关没有工作,我添加了一个脚本块来启动日志记录。因此,命令和日志块看起来像这样:

Get-Content "C:\scripts\inputfiles\E3users.txt" | foreach {Set-MsolUserLicense -UserPrincipalName $_ -LicenseOptions $ENTERPRISEPACK -ea silentlycontinue -ev +action


# if there were no errors, write to the screen and file what was done
if($action.count -eq 0)
{
 Write-Host -ForegroundColor Green "Changed license for" $_
 Write-output $_ | Out-File C:\scripts\OutputFiles\FeatureDisable\logs\LicenseSuccesslogEnterprise04072017.csv -Append
}
# if the initial command failed, then write to a failure logfile 
if($action.count -eq 1)
{
 Write-Host -foreground Yellow "Failed to change license for" $_
 Write-Output $_ | out-file C:\scripts\OutputFiles\FeatureDisable\logs\LicenseFailurelogEnterprise04072017.csv -Append
}
Clear-Variable -Name action}