Автоматизируем включение удаленного доступа 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 – глобальная политика устанавливаемая по умолчанию
Mobility Policy – состоит из двух политик с разрешенным доступом и запрещенным.
- Global – глобальная политика по умолчанию отключает удаленный доступ с мобильных устройств
- Allow – политика разрешает удаленный доступ с мобильных устройств
Импортируем командлеты 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. Там есть необходимый материал для начала обучения