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