Я пытаюсь сделать что-то, что я не думаю, должен быть слишком сложным фиксации. Моя конечная цель: у Меня есть определенные пользователи в одном AD OU, который должен использовать определенную лицензию в Office 365, и различные пользователи в другом OU, которые получают другую лицензию.
Команда, которую я хотел бы выполнить:
Get-ADUser -Filter * -SearchBase "ou=test,dc=our,dc=domain,dc=edu" | Set-MsolUserLicense -AddLicenses ourorg:STANDARDWOFFPACK_IW_STUDENT
но это перестало работать с ответом:
Set-MsolUserLicense : The input object cannot be bound because it did not contain the information required to bind all mandatory parameters: ObjectId At line:1 char:111 + Get-ADUser -Filter * -SearchBase "ou=Test students,ou=Students,dc=campus,dc=org,dc=edu" | Set-MsolUserLicense <<<< -AddLicenses nwcu:STANDARDWOFFPACK_IW_STUDENT
Индивидуально, обе из этих команд работа. Я могу выбрать всех пользователей в OU, и я могу также вручную использовать команду Set-MsolUserLicense с-UserPrincipalName для лицензирования отдельного пользователя.
Это вызвано тем, что Добираются-ADUser, не возвращается, ObjectID как Набор-MsolUserLicense ищет? Доберитесь-ADUser действительно возвращает ObjectGUID. Если я на правильном пути здесь, есть ли способ отобразить их вместе для переданного по каналу входа?
Править: Я знаю популярные способы сделать, это включает загрузку файла CSV для этого, и я знаю, что мог Экспорт CSV эти пользователи, но у меня уже есть они таким образом аккуратный и опрятный в OUs, таким образом, я хотел бы сделать это с теперь импортом/экспортом, если это возможно.
Заранее спасибо!
Вы определенно хотите использовать цикл for-each, чтобы перечислить каждого пользователя и применить лицензию. Цикл должен вызывать .UserPrincipalName
из каждого объекта, возвращенного в вашем запросе Get-ADUser
, так как Office365 должен работать с этим значением при установке лицензий:
Get-ADUser | %{ Set-MSOLUserLicense -UserPrincipalName $_.UserPrincipalName }
Я создал здесь свой собственный ответ, чтобы объяснить общий случай, который, как мне кажется, вы описываете в своем вопросе: Вы не хотите применять одни и те же варианты лицензий ко всем.
Блог TechNet по этому вопросу очень полезен. Возможно, вы не захотите предоставлять своему финансовому отделу доступ к SharePoint Online/OneDrive for Business по причинам утечки данных, или же у вас есть колл-центр, который вы не хотите включать для Lync/Skype for Business.
Чтобы получить информацию о вашем арендаторе, начните сверху:
Get-MSOLAccountSku
Это вернет вам лицензионные пакеты, которые у вас есть в арендаторе. Некоторые распространенные SKU - ENTERPRISEPACK и DESKLESSPACK. Они будут перечислены в yourorg:LICENSEPACK
в разделе AccountSkuId.
Важно отметить, что каждый из этих пакетов лицензий может иметь функции, отключенные из них при применении через PowerShell (аналогично, вы можете установить/отключить опции в центре администрирования).
Для создания этого подмножества лицензионных опций создайте новую переменную и используйте New-MSOLLicenseOptions
cmdlet:
$LicOpt = New-MsolLicenseOptions -AccountSkuId "yourorg:ENTERPRISEPACK" -DisabledPlans OFFICESUBSCRIPTION,MCOSTANDARD,SHAREPOINTWAC,SHAREPOINTENTERPRISE,RMS_S_ENTERPRISE
(Вышеуказанные опции будут соответствовать приведенному выше скриншоту, я уверен, вы можете догадаться, что я полностью вытащил их из сценария инициализации. )
Наконец, мы можем связать это с вашим Set-MsolUserLicense
в вашем ForEach цикле:
$LicOpt = New-MsolLicenseOptions -AccountSkuId "yourorg:ENTERPRISEPACK" -DisabledPlans OFFICESUBSCRIPTION,MCOSTANDARD,SHAREPOINTWAC,SHAREPOINTENTERPRISE,RMS_S_ENTERPRISE
Get-ADUser | %{ Set-MsolUserLicense -UserPrincipalName $_.UserPrincipalName -AddLicenses "yourorg:ENTERPRISEPACK" -LicenseOptions $LicOpt }
Как всегда, ваш арендатор может отличаться. Надеюсь, я дал достаточно информации, чтобы вы смогли найти доступные опции и применить их должным образом!
.