我有一个项目,需要在office365 E1许可证下禁用“ EXCHANGE_S_STANDARD”。必须为300多个用户完成此操作。我一直在尝试使用PowerShell。
我在跑步
(Get-MsolUser -UserPrincipalName testuser@domain.com).Licenses[0].ServiceStatus[16]
,所以我知道这是正确的服务计划,但仍然无法正常工作,而且我不确定自己做错了什么。
$License = "Domain:STANDARDPACK"
$LicenseOption = New-MsolLicenseOptions -AccountSkuId $License -DisabledPlans "EXCHANGE_S_STANDARD"
Get-MsolUser -UserPrincipalName testuser@Domain.com | Set-MsolUserLicense $LicenseOption
这是我遇到的错误。
Set-MsolUserLicense : A positional parameter cannot be found that accepts argument 'Microsoft.Online.Administration.LicenseOption'.
At line:3 char:58
+ ... cipalName testuser@domain.com | Set-MsolUserLicense $LicenseOption
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Set-MsolUserLicense], ParameterBindingException
+ FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.Online.Administration.Automation.SetUserLicense
谢谢您的时间。
答案 0 :(得分:1)
运行-LicenseOptions
时需要使用Set-MsolUserLicense
参数:
Get-MsolUser -UserPrincipalName testuser@Domain.com | Set-MsolUserLicense -LicenseOptions $LicenseOption
位置参数错误表示尚未为参数分配位置编号。如果分配了位置编号,则可以在不使用参数名称的情况下将传递给该参数的值附加到命令中。位置编号以0开头。
Function Example {
Param(
[Parameter(Position=0)]
[string]$Par1,
[Parameter(Position=1)]
[string]$Par2,
[Parameter(Position=2)]
[string]$Par3
)
$PSBoundParameters
}
Example "Value1" "Value2" "Value3" # Using Positions
Key Value
--- -----
Par1 Value1
Par2 Value2
Par3 Value3
Example -Par1 "Value1" -Par2 "Value2" -Par3 "Value3" # Using Parameter Names
Key Value
--- -----
Par1 Value1
Par2 Value2
Par3 Value3
但是,请注意,如果将使用和不使用参数名称与位置参数混合使用,PowerShell将按照没有赋值的位置参数的顺序分配未命名的值:
Example "Value3" "Value2" -Par1 "Value1"
Key Value
--- -----
Par1 Value1
Par2 Value3
Par3 Value2
请注意-Par1
是如何使用命名参数获得Value1
的。但是$Par2
得到了Value3
,而$Par3
得到了Value2
。这是因为位置0处的参数已分配。位置1和2没有命名分配。因此,第一个未命名的参数值将转到具有最低可用位置编号的参数。