Как говорит Одед, Active Directory необходимо открыть для подключения к удаленному серверу, используя ServerManager
.
Если у вас есть сервер доступа RDP администратора, есть альтернатива, которая заключается в использовании WinRM и Remote PowerShell (лучше всего работает с PowerShell 2.0, который поставляется с последней версией WinRM) в ваших сценариях сборки:
Средство командной строки для удаленного управления Windows (Winrm.cmd)
Чтобы быстро настроить WinRM для двух машин, не входящих в домен:
Клиент:
winrm quickconfig (just say yes)
winrm set winrm/config/Client/Auth '@{Basic="true"}'
:: Only do this next line if not using HTTPS
winrm set winrm/config/Client '@{AllowUnencrypted="true"}'
winrm set winrm/config/Client '@{TrustedHosts="hostname_or_ip"}'
Сервер:
winrm quickconfig (just say yes)
winrm set winrm/config/Service/Auth '@{Basic="true"}'
:: See: http://support.microsoft.com/kb/2019527 regarding https
winrm quickconfig -transport:https
:: Only do this if not using HTTPS AND you are happy about sending credentials
:: in clear text.
winrm set winrm/config/Service '@{AllowUnencrypted="true"}'
Теперь есть несколько предостережений. WinRM пробьет дыру в брандмауэре Windows для портов 5985 и 5986 для приемника (если работает под управлением Windows 2003, он будет использовать порты 80 и 443). Это может не понравиться вам, и вам, вероятно, лучше поговорить с администраторами сети о том, как это обезопасить.
После настройки WinRM вам потребуется настроить учетную запись пользователя на удаленном сервере, который является членом группы администраторов. После этого вы можете проверить. На сервере сборки:
# the following line will prompt for a username and password, enter the name of the account
# you just configured on the IIS box
$cred = Get-Credential
# next test the connection
Test-WSMan -ComputerName <server_name_or_ip> -Authentication default `
-Credential $cred
Если все хорошо, вы должны увидеть следующий ответ:
wsmid : http://schemas.dmtf.org/wbem/wsman/identity/1/wsmanidentity.x
sd
ProtocolVersion : http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd
ProductVendor : Microsoft Corporation
ProductVersion : OS: 6.1.7600 SP: 0.0 Stack: 2.0
Далее нужно подключиться к удаленному сеансу PowerShell:
Enter-PSSession <server_name_or_ip> -Authentication default -Credential $cred
Если это успешно, у вас должно быть приглашение PowerShell на удаленной машине.
Используя Remote PowerShell, вы можете загрузить поставщика WebAdministration для PowerShell и манипулировать многими аспектами IIS для своего сердца:
Поставщик веб-администрирования (IIS) для Windows PowerShell
Для подключения к удаленному серверу вам необходимо предоставить объект PSCredential
. Как упоминалось выше, вы можете указать это с помощью:
$cred = Get-Credential
Однако это всегда требует некоторого взаимодействия с клавиатурой для предоставления имени пользователя и пароля. Очевидно, что это не годится для автоматизированного КИ.
Однако вы можете сохранить пароль в файле. Для этого выполните один раз (или всякий раз, когда пароль меняется):
read-host -assecurestring | convertfrom-securestring | out-file C:\securestring.txt
Затем, когда вам нужно создать PSCredential
для аутентификации на удаленном сервере:
$username = "deployment_user"
$password = cat C:\securestring.txt | convertto-securestring
$cred = new-object -typename System.Management.Automation.PSCredential `
-argumentlist $username, $password
$serverNameOrIp = "192.168.1.1"
Enter-PSSession $serverNameOrIp -Authentication default -Credential $cred
Вышеуказанный скрипт был получен из следующей записи в блоге, но я продублировал, чтобы сохранить здесь на случай, если статья погаснет:
Использование PSCredentials без приглашения - GeeksWithBlogs
В любом случае, после подключения к удаленному серверу вы можете вводить дополнительные команды, такие как:
Import-Module WebAdministration
CD IIS:\Sites
и т. Д.
К большинству вышеперечисленного следует подходить с осторожностью, если данный аппарат подключен к Интернету и единственный доступ к нему осуществляется через Интернет. Если это так, рассмотрите возможность ограничения портов WinRM только для VPN.