Включение политики звонков для группы

Skype for Business позволяет довольно удобно настраивать права для различных пользователей. Только вот нельзя применить политику на группу пользователей в AD. Создавая новый Dialpan его можно применить на Site, Pool или User. Мне необходимо добавлять определенный Dialplan и Voicepolicy для группы AD в которую входят пользователи из других групп. Напишем сценарий который будет активировать включение политики звонков для группы в домене.

New DialPlan

Перед написанием сценария создаем группу в AD с названием GP_NEW_DP. В Skype for Business я использую Dialplan: NEW_DP и VoicePolicy: NEW_VP

Переменные даты

Создадим переменные в которых будем хранить текущую дату в разном формате. Использовать будем для имени лог файла и записи факта смена политики в сам файл.

$gdt=Get-Date -Format "dd:MM:yyyy HH:mm:ss"
$data = Get-Date -Format yyyyMMdd
Включение логирования

Для удобства и понимания что политики применяются включим логирование. Папка с логами будет располагаться по пути: C:\Logs

$logf = Test-Path -path "c:\Logs"
If ($logf -eq $false) {New-Item -ItemType directory -Path c:\Logs}
$Logfile = "c:\Logs\$data SfB_DP_VP.log"

Если такой папки нет она будет создана. Новый файл с логами будет создаваться ежедневно в случае постоянной работы сценария.

Группа поиска

Найдем всех пользователей Skype for Business в указанной группе AD

$get_users=Get-ADGroupMember "GP_NEW_DP" -Recursive|get-aduser|foreach {get-csuser $_.UserPrincipalName -ErrorAction SilentlyContinue|where {$_.DialPlan -notlike "NEW_DP"}}

Будут найдены пользователи без включенной политики NEW_DP. Я не применяю политику на всех пользователей в группе. Она включится у тех, кто имеет Dialplan отличный от NEW_DP. Это позволит уменьшить нагрузку на сервер и ускорит отработку скрипта.

Применение политик

Примени политик к пользователям группы AD отфильтрованным на предыдущем этапе

foreach ($i in $get_users) {
Grant-CsVoicePolicy -Identity $i.SipAddress -PolicyName "NEW_VP"
Grant-CsDialPlan -Identity $i.SipAddress -PolicyName "NEW_DP"
$dn=$i.DisplayName
Add-Content $Logfile -value "$gdt Политики дозвона SfB изменены для $dn"
}

В цикле я прохожусь по каждому пользователю из группы и включаю ему необходимую VoicePolicy и Dialplan. Ничего не мешает включить сюда дополнительные параметры если потребуется.

Сценарий полностью

#Создаем переменные с датой в разном формате
$gdt=Get-Date -Format "dd:MM:yyyy HH:mm:ss"
$data = Get-Date -Format yyyyMMdd
#Создание каталога для логов в случае его отсутствия
$logf = Test-Path -path "c:\Logs"
If ($logf -eq $false) {New-Item -ItemType directory -Path c:\Logs}
$Logfile = "c:\Logs\$data SfB_DP_VP.log"
#Поиск пользователей в указанной группе
$get_users=Get-ADGroupMember "GP_NEW_DP" -Recursive|get-aduser|foreach {get-csuser $_.UserPrincipalName -ErrorAction SilentlyContinue|where {$_.DialPlan -notlike "NEW_DP"}}
#Цикл применяющий политики к каждому из пользователей
foreach ($i in $get_users) {
Grant-CsVoicePolicy -Identity $i.SipAddress -PolicyName "NEW_VP"
Grant-CsDialPlan -Identity $i.SipAddress -PolicyName "NEW_DP"
$dn=$i.DisplayName
Add-Content $Logfile -value "$gdt Политики дозвона SfB изменены для $dn"
}

Указанный сценарий добавляем в Task Scheduler и укажем запуск 1 раз в час. Можно уменьшить либо увеличить время, в зависимости от ваших потребностей.

Мы рассмотрели каким образом сделать включение политики звонков для группы пользователей в AD.

Поделиться:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *