我已经开始了脚本来实现这一点:
$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
命令。 TrustedHosts
。 我一直在使用这个网页,以及其他许多人,试图解决这个问题,据我可以告诉它应该工作(或至less没有连接问题)。
Remote Managers Group
。 任何答案,意见,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-Service
replace它。 脚本现在看起来像:
$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