Управление Windows Azure Pack с помощью Powershell. Массовое добавление подписки пользователям.
Данная тема не является сильно сложной, но есть особенности, которые надо знать. Я решил написать эту статью больше как конспект для себя. Как раз появилась задача по массовому добавлению пользователям сервисного плана 5nine. В данной заметке не будет серьезной проработки вопроса, только how-to.Для начала надо получить информацию о пользователях WAP. Для этого мы будем использовать командлет Get-MgmtSvcUser. Обязательными параметрами являются AdminURI и Token. Вот с получения их мы и начнем.
1. Получаем URI, с которыми будем работать далее:
$AdminUri = (Get-MgmtSvcEndpoint -Namespace AdminAPI | ? name -eq AdminAPI).Address.ToString()
$WindowsAuthURI = (Get-MgmtSvcEndpoint -Namespace WindowsAuthSite | ? name -eq PassiveRequestorAddress).Address.ToString()
2. Генерируем токен:
$token = Get-MgmtSvcToken -Type Windows -AuthenticationSite $WindowsAuthURI -ClientRealm "http://azureservices/AdminSite"
Теперь проверяем, что коммандлет Get-MgmtSvcUser отрабатывает корректно и создаем переменную $user:
Get-MgmtSvcUser -AdminUri $AdminUri -Token $token -DisableCertificateValidation
$user = Get-MgmtSvcUser -AdminUri $AdminUri -Token $token -DisableCertificateValidation | ? name -eq user@contoso.com
Попробуем получить список подписок для пользователя:
Get-MgmtSvcSubscription -AdminUri $AdminUri -Token $token -DisableCertificateValidation | ? AccountAdminLiveEmailID -eq $user.email | fl SubscriptionName, OfferFriendlyName, State, PlanId
Увидим примерно такой вывод:
SubscriptionName : demo
OfferFriendlyName : demo
State : Active
PlanId : demoijmth8e9
Теперь добавим пользователю еще одну подписку.
1. Записываем информацию о нашем сервисном плане, который собираемся добавить, в переменную:
$plan = Get-MgmtSvcPlan -AdminUri $AdminUri -Token $token -DisableCertificateValidation | ? DisplayName -eq 5nineCS
2. Проверим, что у пользователя этот тарифный план еще не активирован и добавим его пользователю:
$PlanCheck = Get-MgmtSvcSubscription -AdminUri $AdminUri -Token $token -DisableCertificateValidation | ? {$_.AccountAdminLiveEmailID -eq $user.email -AND $_. PlanId -eq $plan.ID}
if (!$PlanCheck) {
Add-MgmtSvcSubscription -AdminUri $AdminUri -Token $token -AccountAdminLiveEmailId $user.Email -PlanId $plan.Id -FriendlyName $plan.Displayname -DisableCertificateValidation -AccountAdminLivePuid $user.email
}
Вот и все, план для пользователя добавлен. Теперь осталось свести все в один скрипт, который будет выбирать пользователей из списка и добавлять им подписку.
$users = Get-Content C:\temp\list.txt
$AdminUri = (Get-MgmtSvcEndpoint -Namespace AdminAPI | ? name -eq AdminAPI).Address.ToString()
$WindowsAuthURI = (Get-MgmtSvcEndpoint -Namespace WindowsAuthSite | ? name -eq PassiveRequestorAddress).Address.ToString()
if (!$token) {
$token = Get-MgmtSvcToken -Type Windows -AuthenticationSite $WindowsAuthURI -ClientRealm "http://azureservices/AdminSite"
}
$plan = Get-MgmtSvcPlan -AdminUri $AdminUri -Token $token -DisableCertificateValidation | ? DisplayName -eq 5nineCS
foreach ($user in $users) {
$SvcUser = Get-MgmtSvcUser -AdminUri $AdminUri -Token $token -DisableCertificateValidation | ? name -eq $user
$PlanCheck = Get-MgmtSvcSubscription -AdminUri $AdminUri -Token $token -DisableCertificateValidation `
| ? {$_.AccountAdminLiveEmailID -eq $SvcUser.email -AND $_.PlanId -eq $plan.ID}
if (!$PlanCheck) {
Add-MgmtSvcSubscription -AdminUri $AdminUri -Token $token -AccountAdminLiveEmailId $SvcUser.Email `
-PlanId $plan.Id -FriendlyName $plan.Displayname -DisableCertificateValidation -AccountAdminLivePuid $SvcUser.email
}
}
Комментариев нет:
Отправить комментарий