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