Я написал приложения DotNet Forms, которые используют автоматизацию PowerShell для создания и изменения пользователей в локальном AD, локальном Exchange, Azure AD и O365 для соответствия отчетам, предоставленным HR. Это уже несколько лет используется клиентом и отлично работает.azure AD powerShell edit manager
В коде используется Azure Active Directory Module для Windows PowerShell (MSOnline - MSOL) для просмотра и редактирования пользователей в Azure AD. Первоначально я использовал MSOL версии 8073.4, но я с тех пор повышен до MSOL версии 1.1.166.0 (см http://social.technet.microsoft.com/wiki/contents/articles/28552.microsoft-azure-active-directory-powershell-module-version-release-history.aspx)
Например, я хотел бы использовать следующий PowerShell, чтобы изменить название пользователя:
Import-Module MSOnline
$Cred = Get-Credential
Connect-MSOLService -Credential $Cred
Set-MSOLUser -UserPrincipalName [email protected] -Title 'Deliverer of presents'
Everything было в порядке, пока меня не попросили продлить код, чтобы обновить каждый атрибут «ID менеджера» Azure AD. Легко я подумал! Мне просто нужно обновить поле «ID менеджера» пользователя (которое является идентификатором объекта учетной записи Azure AD менеджера), так же, как я обновляю заголовок .....
Er, no. Я не могу найти способ изменить поле менеджера. Я перешел на документацию MSDN и не могу найти какой-либо метод для этого:
Итак, я рассмотрел новые модули AD2 для Azure, которые находятся в предварительном просмотре на данный момент (упомянутые выше в URL истории релиза) и можно загрузить из галереи PowerShell (найдите «AzureADPreview»). В конечном итоге они заменят старые командлеты MSOL и очень похожи на существующие модули Azure PowerShell (для создания виртуальных машин и т. Д.). Это обеспечит поддержку для установки «менеджер ID» пользователя с помощью команды
Set-AzureADUserManager
и я попробовал это, и это работает, так что я думал, что я обновить мое приложение, чтобы использовать новые v2 API, вместо API v1 (MSOL).
К сожалению, я обнаружил, что
Set-AzureADUser
команда (используется для установки атрибутов, таких как название работы) полностью нарушена в v2.0.0.1 и завершается с ошибкой
«исключение было брошенный мишенью вызова "
для любой комбинации, которую я пробую. Я сообщил об этом разработчикам через галерею PowerShell.
К счастью, я обнаружил, что предыдущая версия 1.1.167.0 этих модулей работает нормально, поэтому я использую эту версию и теперь могу успешно создавать пользователей, изменять пользователей, настраивать «идентификатор менеджера» пользователя, но я не могу понять, как установить лицензии (например, O365_BUSINESS_PREMIUM). Документация для команды Set-AzureADUserLicense в значительной степени отсутствует, и я не смог решить, как ее использовать.
Я думаю, что мне нужно сделать следующее:
# Create an object which contains the individual license 'x' I want to add
# The available license SkuIDs can be read from Get-AzureADSubscribedSku
$MySingleLicenseToAdd = New-Object -TypeName Microsoft.Open.AzureAD.Model.AssignedLicense
$MySingleLicenseToAdd.SkuID = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
# Create a licenses object which is assigned the individual licenses I want to add or remove
$MyLicensesToAddOrRemove = New-Object -TypeName Microsoft.Open.AzureAD.Model.AssignedLicenses
$MyLicensesToAddOrRemove.AddLicenses = $MySingleLicenseToAdd
$MyLicensesToAddOrRemove.RemoveLicenses = $Null
# Perform the license action against the specified user 'y'
Set-AzureADUserLicense -ObjectId 'yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyy' -AssignedLicenses $MyLicensesToAddOrRemove
, но он не на второй строке кода, говоря, что «SkuID» является полем только для чтения.
Поэтому я не могу использовать API V1 (MSOL), потому что не могу найти способ обновить поле «Менеджер ID» пользователя. Я не могу использовать API-интерфейсы V2, потому что я не могу найти способ назначить лицензии (и это в предварительном просмотре, поэтому не рекомендуется использовать в прямом эфире)
Мой текущий план - вернуться к использованию API V1, но затем используйте API-интерфейсы V2 для обновления только поля «Менеджер ID», но это вряд ли идеальное решение (потому что я буду дважды подписаться на Azure с двумя разными API-интерфейсами), поэтому мне было интересно, могут ли кто-нибудь дать какие-либо предложения?
- Мое предпочтение было бы использовать API-интерфейсы v1 (MSOL), чтобы обновить поле «Менеджер ID».
- Моим вторым преимуществом было бы использовать API v2 и узнать, как назначать лицензии.
- Мой третий предпочтение все остальное;)
Я прочитал одну статью об использовании REST API, непосредственно, но это был путь тяжелый, и я бы предпочел, чтобы избежать и придерживаться с API Azure PowerShell, если это возможно ,
Извините за вопрос о looooong, но я пытался указать некоторый контекст, почему я пытаюсь использовать V2 API.
Update (23/09/2016):
AzureADPreview 2.0.0.2 была выпущена только и исправляет проблему с Set-AzureADUser :), но, к сожалению, частично рвёт Set-AzureADUserManager :(
Такая же проблема с лицензиями с этой новой версией
Пожалуйста, не добавляйте «спасибо» в качестве ответа. Вместо этого ** [принять ответ] (http://stackoverflow.com/help/accepted-answer) **, который вы нашли наиболее полезным. - [Из обзора] (/ review/low-quality-posts/14240288) –
Это была ошибка. Я не понял, что сделал комментарий (новичок в Stack Overflow), но я удалю комментарий. Я не знал, что ответить, потому что Роб просто предоставил тот же самый код, который я пытался (поэтому он не ответил на мой вопрос). Затем я обнаружил, что исправление было фактически в новой версии 2.0.0.7. Поэтому мой собственный ответ - это правильный ответ. Могу ли я присудить себе ответ (это даже приемлемо?) –
Полностью приемлемо, если ответ, который вы написали, был способом, которым вы решили проблему. –