Я пытаюсь автоматизировать процесс установки Skype для бизнеса Server в Powershell, у меня есть сценарий, который удаленно подключается к указанным машинам и начинает их подготовку как серверы переднего плана. Проблема заключается в том, что определенные командлеты SfB (все команды SfB имеют форму «verb-Cs ...», например Get-CsUser или Get-CsPool) запускаются в удаленных сеансах, они выдают ошибку двойного перехода:
Exception: Active Directory error "-2147016672" occurred while searching for domain controllers in domain...
Это происходит после запуска Enable-CsComputer, который включает определение роли компьютера в топологии (топология была успешно опубликована). Пользовательский объект находится во всех необходимых группах (RTCUniversalServerAdmins, Schema Admins, CsAdministrators и права локального администратора на всех серверах SfB). Как ни странно, команда Import-CsConfiguration -localstore не выдает ошибок и находится в том же удаленном сеансе. Могут быть другие локальные или доменные группы, в которых мне нужно быть, но я не могу точно определить, в каких именно и не видел они задокументированы в руководствах по сборке Skype. Команды Skype, которые имеют параметры для указания целей или просто извлечения данных, например Get-CsPool или Get-CsAdForest, не содержат ошибок, поскольку выполняются в локальной области. Enable-CsComputer не имеет параметр для имени компьютера, он должен выполняться с самого этого компьютера.
Включение делегирования CredSSP на каждом сервере не является вариантом, и я не понимаю, почему в этой команде есть «второй прыжок» ! Если бы вторым прыжком был ресурс на файловом сервере или в базе данных, это имело бы смысл, и его было бы легко решить, но в этом случае я не могу его отследить. Может ли кто-нибудь сказать мне, что мне может не хватать?
Вот пример кода, который можно проиллюстрировать. Из jumbox я получаю данные пула для создания массив, и сеанс открывается для каждой машины:
$ServerArray =get-cspool -identity $poolName
$i=0
$SessionArray = @{}
foreach($server in $ServerArray.Computers){$SessionArray[$i] = new-PsSession -ComputerName $server}
foreach($session in $SessionArray.values){
invoke-Command -session $session -scriptBlock {
#remote commands:
import-csConfiguration -<config file path> -localstore; #no errors
enable-CsReplica; #no errors
enable-cscomputer; #double hop error here
}}
Если я вхожу на эту машину и запускаю ту же команду, она выполняется нормально, но цель проекта - автоматизировать ее на произвольном количестве станки.