Автоматизируем включение удаленного доступа S4B

В своей предыдущей статье я автоматизировал включение OWA и ActiveSync в Microsoft Exchange. Сегодня мы автоматизируем включение удаленного доступа S4B. А именно удаленный доступ настольных и мобильных клиентов Skype for Business. Автоматизация будет по тому же принципу что и Microsoft Exchange. Мы создадим группу в ActiveDirectory и всем пользователям в группе будет разрешен соответствующий доступ.

Топология сети Skype for Business

External Access Policy – состоит из четырех политик с разным уровнем доступа.

  • Allow remote Access – разрешен полный удаленный доступ с настольных клиентов
  • Allow Skype – открыт доступ только к Skype (не бизнес)
  • Deny – полностью закрыт удаленный доступ
  • Global – глобальная политика устанавливаемая по умолчанию
External Access Policy

Mobility Policy – состоит из двух политик с разрешенным доступом и запрещенным.

  • Global – глобальная политика по умолчанию отключает удаленный доступ с мобильных устройств
  • Allow – политика разрешает удаленный доступ с мобильных устройств
Mobility Policy

Импортируем командлеты Microsoft Exchange и ActiveDirectory

$exch = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://mbx.newadmin.ru/powershell/ -ErrorAction SilentlyContinue
Import-PSSession $exch -ErrorAction SilentlyContinue

В строке http://mbx.newadmin.ru/powershell/ меняете mbx.newadmin.ru на полное доменное имя своего сервера Microsoft Exchange.

Определим контроллер домена

У меня только один домен в Skype for Business поэтому определим контроллер домена для основного домена newadmin.ru

$msk=(Get-DomainController -DomainName newadmin.ru |select -First 1).DnsHostName

Тут можно было бы прописать контроллер домена ручками, но в таком случае если имя изменится скрипт перестанет работать и придется его править.

Используя группы в AD получаем список пользователей

Для удаленного доступа используем 3 группы в AD.

  • SFB_EXT_ALL – пользователи с удаленным доступом с настольного клиента, skype также доступен (политика Allow remote Access в SfB)
  • SFB_EXT_SKYPE – пользователи с удаленным доступом только к Skype (политика Allow Skype)
  • SFB_MOBILE – пользователи которым разрешен доступ с мобильных клиентов (мобильная политика Allow)
$other=Get-CsUser
$users_desktop=(Get-ADGroupMember -Identity "SFB_EXT_ALL" -Server $msk | foreach {Get-ADUser $_}).UserPrincipalName |Get-CsUser -ErrorAction SilentlyContinue
$users_skype=(Get-ADGroupMember -Identity "SFB_EXT_SKYPE" -Server $msk | foreach {Get-ADUser $_}).UserPrincipalName |Get-CsUser -ErrorAction SilentlyContinue
$users_mobile=(Get-ADGroupMember -Identity "SFB_MOBILE" -Server $msk | foreach {Get-ADUser $_}).UserPrincipalName |Get-CsUser -ErrorAction SilentlyContinue

Получаем список пользователям по трем группам и записываем их в переменные $users_desktop, $users_skype, $users_mobile

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

Определим пользователей и применим к ним соответствующие политики Skype for Business

$desk=(Compare-Object -ReferenceObject $users_desktop -DifferenceObject $other).InputObject
$skype=(Compare-Object -ReferenceObject $users_skype -DifferenceObject $desk).InputObject
$mobik=(Compare-Object -ReferenceObject $users_mobile -DifferenceObject $other).InputObject
$users_desktop|Where {$_.ExternalAccessPolicy -notlike "Allow remote Access"}|Grant-CsExternalAccessPolicy -PolicyName "Tag:Allow remote Access"
$users_skype|Where {$_.ExternalAccessPolicy -notlike "Allow Skype"}|Grant-CsExternalAccessPolicy -PolicyName "Tag:Allow Skype"
$users_mobile|where {$_.MobilityPolicy -notlike "Allow"}|Grant-CsMobilityPolicy -PolicyName "Allow"
$skype|Where {$_.ExternalAccessPolicy -notlike "Deny"}|Grant-CsExternalAccessPolicy -PolicyName "Tag:Deny" -ErrorAction SilentlyContinue
$mobik|where {$_.MobilityPolicy -ne $Null}|Grant-CsMobilityPolicy -PolicyName $Null

Мы применили политики открытия доступа всем кто в группах, остальным доступ закрыли.

Полная версия скрипта автоматизации включения удаленного доступа S4B

$exch = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://mbx.newadmin.ru/powershell/ -ErrorAction SilentlyContinue
Import-PSSession $exch -ErrorAction SilentlyContinue
$msk=(Get-DomainController -DomainName newadmin.ru |select -First 1).DnsHostName
$other=Get-CsUser
$users_desktop=(Get-ADGroupMember -Identity "SFB_EXT_ALL" -Server $msk | foreach {Get-ADUser $_}).UserPrincipalName |Get-CsUser -ErrorAction SilentlyContinue
$users_skype=(Get-ADGroupMember -Identity "SFB_EXT_SKYPE" -Server $msk | foreach {Get-ADUser $_}).UserPrincipalName |Get-CsUser -ErrorAction SilentlyContinue
$users_mobile=(Get-ADGroupMember -Identity "SFB_MOBILE" -Server $msk | foreach {Get-ADUser $_}).UserPrincipalName |Get-CsUser -ErrorAction SilentlyContinue
$desk=(Compare-Object -ReferenceObject $users_desktop -DifferenceObject $other).InputObject
$skype=(Compare-Object -ReferenceObject $users_skype -DifferenceObject $desk).InputObject
$mobik=(Compare-Object -ReferenceObject $users_mobile -DifferenceObject $other).InputObject
$users_desktop|Where {$_.ExternalAccessPolicy -notlike "Allow remote Access"}|Grant-CsExternalAccessPolicy -PolicyName "Tag:Allow remote Access"
$users_skype|Where {$_.ExternalAccessPolicy -notlike "Allow Skype"}|Grant-CsExternalAccessPolicy -PolicyName "Tag:Allow Skype"
$users_mobile|where {$_.MobilityPolicy -notlike "Allow"}|Grant-CsMobilityPolicy -PolicyName "Allow"
$skype|Where {$_.ExternalAccessPolicy -notlike "Deny"}|Grant-CsExternalAccessPolicy -PolicyName "Tag:Deny" -ErrorAction SilentlyContinue
$mobik|where {$_.MobilityPolicy -ne $Null}|Grant-CsMobilityPolicy -PolicyName $Null

Добавляем скрипт в автозагрузку с повторением запуска каждый час. Благодаря тому что мы автоматизируем включение удаленного доступа S4B посредством групп в AD, нам нет необходимости каждый раз лезть в консоль управления Skype for Business.

Если вы только начинаете знакомство с Powershell советую посетить страницу Microsoft. Там есть необходимый материал для начала обучения

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

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