Я пытаюсь отключить сублицензию из лицензии office365 E1

#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 были оставлены без именованных назначений. Таким образом, первое неназванное значение параметра перешло к параметру с наименьшим доступным номером позиции.