Назад | Перейти на главную страницу

Как остановить службу на удаленном сервере, который не подключен к домену, с помощью пользователя без администратора через PowerShell

Для этого у меня есть начало сценария:

$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.

Я использовал этот страницу, среди многих других, чтобы попытаться решить эту проблему, и, насколько я могу судить, она должна работать (или, по крайней мере, не иметь проблем с подключением).

Приветствуются любые ответы, советы, предложения и т. Д. Спасибо.

Проблема оказалась в настройках брандмауэра на удаленном сервере. В 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