Я работаю над сценарием, который соединяет среду O365 и удаляет лицензии.
Теперь мне нужно удалить несколько лицензий, которые больше не относятся к пользователю. И список лицензий такого типа будет присутствовать в строковой переменной.
Если я знаю название лицензий перед этим, команда будет выглядеть так:
Set-MsolUserLicense -UserPrincipalName "ID_TestB@lic.com" -RemoveLicenses "liconline:DESKLESSPACK","liconline:OFFICESUBSCRIPTION";
Приведенная выше команда удалит две лицензии, а именно desklesspack и офисную подписку для использования ID_TestB@lic.com ( обратите внимание на двойные кавычки в каждом имени лицензии )
Но это не так, как я хочу, чтобы это было динамичным, когда я буду передавать лицензии непосредственно переменной
Итак, теперь, если я собираю эти лицензии в переменную, скажем, $ license, где $ license -
$license="`"liconline:DESKLESSPACK`",`"liconline:OFFICESUBSCRIPTION`""
обратные кавычки являются escape-символом в powershell, поэтому я избегаю двойных кавычек, которые должны быть частью текста при помощи обратного кавычка
Теперь, если я использую это
Set-MsolUserLicense -UserPrincipalName "ID_TestB@lic.com" -RemoveLicenses $license;
это выдает ошибку
Set-MsolUserLicense: невозможно назначить эту лицензию, потому что она
недействительным. Используйте командлет Get-MsolAccountSku, чтобы получить список допустимых
лицензии.
Я тоже пытался сделать это так:
$license1 = "liconline:DESKLESSPACK";
$license2 = "liconline:OFFICESUBSCRIPTION";
Set-MsolUserLicense -UserPrincipalName "ID_TestB@licent.com" -RemoveLicenses $license1, $license2;
который сработал.
опять же, это не динамический подход, поскольку может случиться так, что существует более двух лицензий.
Если у кого-то есть идеи, с помощью которых это может работать, пожалуйста, помогите. Также я не хочу разбивать строку и повторять цикл for