#powershell #office365
#powershell #office365
Вопрос:
У меня есть проект, в котором мне нужно отключить «EXCHANGE_S_STANDARD» под лицензией office365 E1. Это нужно будет сделать для более чем 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
Спасибо вам за уделенное время.
Ответ №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
Однако обратите внимание, что если вы смешиваете имена параметров using и неиспользованные с вашими позиционными параметрами, PowerShell присвоит неназванные значения в порядке позиционных параметров, у которых нет назначений:
Example "Value3" "Value2" -Par1 "Value1"
Key Value
--- -----
Par1 Value1
Par2 Value3
Par3 Value2
Обратите внимание, как -Par1
получилось Value1
использовать именованный параметр. Но $Par2
получил Value3
и $Par3
получил Value2
с использованием позиций. Это потому, что параметру в позиции 0 уже присвоено назначение. Позиции 1 и 2 были оставлены без именованных назначений. Таким образом, первое неназванное значение параметра перешло к параметру с наименьшим доступным номером позиции.