четверг, 30 марта 2017 г.

Управление 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

    }

}



Комментариев нет:

Отправить комментарий