Для этого у меня есть начало сценария:
$SecurePassword = ConvertTo-SecureString –String $Password –AsPlainText -Force
$Credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $UserName, $SecurePassword
$sess = New-PSSession -ComputerName $IPAddress -Credential $Credential
Invoke-Command -Session $sess -ScriptBlock {Get-Service}
Remove-PSSession -Session $sess
но я получаю эту ошибку подключения:
New-PSSession: [xx.xx.xx.xx] Не удалось подключиться к удаленному серверу xx.xx.xx.xx со следующим сообщением об ошибке: WinRM не может завершить операцию. Убедитесь, что указанное имя компьютера допустимо, что компьютер доступен по сети и что исключение брандмауэра для службы WinRM включено и разрешает доступ с этого компьютера. По умолчанию исключение брандмауэра WinRM для общедоступных профилей ограничивает доступ к удаленным компьютерам в той же локальной подсети. Для получения дополнительных сведений см. Раздел справки about_Remote_Troubleshooting.
Enable-PSRemoting
как на клиентском, так и на удаленном сервере. TrustedHosts
на клиентском сервере. Я использовал этот страницу, среди многих других, чтобы попытаться решить эту проблему, и, насколько я могу судить, она должна работать (или, по крайней мере, не иметь проблем с подключением).
Remote Managers Group
. Приветствуются любые ответы, советы, предложения и т. Д. Спасибо.
Проблема оказалась в настройках брандмауэра на удаленном сервере. В HOW TO ADD A FIREWALL EXCEPTION
раздел about_Remote_Troubleshooting
состояния:
Enable-PSRemoting пытается создать исключение брандмауэра для связи WS-Management. В серверных версиях Windows он создает исключение брандмауэра для всех сетевых расположений.
что он и сделал. Однако, если сетевой профиль является частным, он разрешает соединения только с серверов в локальной подсети, чего не было в моей ситуации. После добавления дополнительной области в правило брандмауэра я смог подключиться к серверу.
Мне нужно было решить еще одну проблему, так как я не мог получить список служб, использующих Get-Service
но поскольку я знаю название службы, которую останавливаю, я могу заменить ее на Stop-Service
. Теперь сценарий выглядит так:
$securePassword = ConvertTo-SecureString –String $password –AsPlainText -Force
$credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $userName, $securePassword
$sess = New-PSSession -ComputerName $ipAddress -Credential $credential
$scriptBlock = {
$serviceName = "SeriveName"
Stop-Service -Name $serviceName
}
Invoke-Command -Session $sess -ScriptBlock $scriptBlock
Remove-PSSession -Session $sess