如何在远程服务器上停止服务,该服务器没有连接到域,通过PowerShell使用非pipe理员用户

我已经开始了脚本来实现这一点:

$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无法完成操作。 validation指定的计算机名称是否有效,是否可以通过networking访问该计算机,以及是否启用WinRM服务的防火墙例外,并允许从此计算机访问。 默认情况下,公用configuration文件的WinRM防火墙例外限制对同一本地子网内的远程计算机的访问。 有关更多信息,请参阅about_Remote_Troubleshooting帮助主题。

  • 要尝试获取脚本,我已经在客户端和远程服务器上运行了Enable-PSRemoting命令。
  • 由于远程服务器不是域的一部分,我已经将服务器IP地址添加到客户端服务器上的TrustedHosts

我一直在使用这个网页,以及其他许多人,试图解决这个问题,据我可以告诉它应该工作(或至less没有连接问题)。

  • 我要连接到远程服务器的用户不是pipe理员,而是Remote Managers Group
  • 我也跟着这个问题的build议,授予访问该服务。 我不认为这是远远的,但我想提到它的完整性。

任何答案,意见,build议等,非常感谢。 谢谢。

这个问题变成了远程服务器上的防火墙设置。 HOW TO ADD A FIREWALL EXCEPTION about_Remote_Troubleshooting HOW TO ADD A FIREWALL EXCEPTION部分:

启用-PSRemoting尝试为WS-Management通信创build防火墙例外。 在服务器版本的Windows上,它会为所有networking位置创build防火墙例外。

它做了什么。 但是,如果networkingconfiguration文件是私有的,则只允许来自本地子网上的服务器的连接,而在我的情况下则不是这样。 在将额外的Scope添加到防火墙规则后,我能够连接到服务器。

我还有一个问题需要解决,因为我无法使用Get-Service列表,但是因为我知道停止服务的名称,所以可以使用Stop-Servicereplace它。 脚本现在看起来像:

 $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