我正在尝试实现PowerShell远程处理(用于在远程服务器上执行PowerShell脚本)。我的远程服务器运行的是Windows server 2008和PowerShell v2。
在提升权限的PS控制台中,我执行了以下cmdlet:
Enable-PSRemoting
返回控制台:
WinRM已设置为在此计算机上接收请求。
WinRM已设置为在此计算机上进行远程管理。
从客户端计算机上提升的PowerShell会话中,我执行了以下cmdlet:
Enter-PSSession –ComputerName [remote_server_name]
这次,返回控制台:
Int-PSS:连接到远程服务器[remote_server_name]失败,并出现以下错误消息:客户端无法连接到请求中指定的目的地。验证目的地上的服务正在运行并接受请求。查阅在目的地上运行的WS-Management服务的日志并留档,最常见的是IIS或WinRM。如果目的地是WinRM服务,请在目的地上运行以下命令来分析和配置WinRM服务:“winrm快速配置”。有关详细信息,请参阅about_Remote_Troubleshooting帮助主题。
在行:1字符:1
输入\u PSSession–ComputerName[远程服务器名称]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
CategoryInfo:无效/参数:([远程服务器名称]:string)[输入PSSession],PSRemotingTransportException
完全合格错误ID:CreateRemote teRunspace失败
我根据错误消息建议执行了“winrm quickconfig”。再次返回控制台:
WinRM已设置为在此计算机上接收请求。
WinRM已设置为在此计算机上进行远程管理。
正在重试
Enter-PSSession –ComputerName [remote_server_name]
从客户端机器返回相同的错误。
我仔细检查了WinRM服务是否在远程服务器上运行。为TCP协议、本地端口5985和所有远程端口配置了Windows远程管理(HTTP-In)防火墙规则。
即使我执行
Get-Service WinRM –ComputerName [remote_server_name]
从客户端机器,我们看到返回到控制台,确认WinRM服务确实在远程服务器上运行:
状态名称DisplayName
------ ---- -----------
运行WinRM Windows远程管理(WS-Manag...
在远程计算机上执行以下命令
WinRM Enumerate WinRM/Config/Listener
返回控制台,演示正确的端口已打开:
侦听器[源=“GPO”]
地址=*
端口=5985
主机名已启用=true
URLPrefix=wsman
CertificateThumbprint ListeningOn=null
但是,执行
$remoteServer = [test_server_name]
$port = 5985
$connection = New-Object System.Net.Sockets.TcpClient($remoteServer, $port)
if ($connection.Connected) {
Write-Host "Success"
}
else {
Write-Host "Failed"
}
返回以下错误消息:
新对象:使用“2”参数调用“.ctor”时发生异常:“无法建立连接,因为目标计算机主动拒绝它[远程服务器IP地址]:5985”
第4行字符:15
…onnection=新对象System.Net.Sockets。TcpClient($ipaddress,$port。。。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
CategoryInfo:InvalidOperation:(:)[新对象],MethodInvocationException
完全合格ErrorId:ConstructorInvokedThrowException,Microsoft。PowerShell。命令。新对象命令
我有另一台远程服务器,运行带有PowerShell v4的Windows Server 2012 R2。我在此框上启用了PS远程处理,没有问题,并且可以从同一客户端远程执行PS脚本。
那么,我错过了什么?PowerShell版本之间是否存在兼容性问题?
我的客户端PC正在运行PowerShell 5,我正常运行的远程服务器正在运行PowerShell 4,我失败的远程服务器正在运行PowerShell 2。
洞察力,指导,建议非常欢迎。谢谢寻找。
更新:
此后,我将测试VM上的. Net Framework更新到. Net 4.7.2,并在受影响的VM上安装了PowerShell 4(与正常运行的盒子相同)。
在比较我的工作VM和受影响机器之间的WinRM相关注册表项时,我发现了关键:
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WSMAN\Service
在正在工作的虚拟机上,我发现一个32位的“允许远程请求”,赋值为1。受影响机器的注册表中缺少此项。我添加了它,重新启动了机器,重试了连接请求。
然而,同样的问题依然存在。
似乎WinRM服务绑定到的IP地址很重要,并且以某种方式与IIS IP绑定在一起(我可能错了)@Komputer的代码提供了一个很好的线索,在我的例子中,为“-ComputerName localhost”运行它不起作用,但当我输入真正的服务器名时起作用。
正在做
netstat -aon | find "5985"
返回
TCP 192.168.24.82:5985 0.0.0.0:0 LISTENING 4
这验证了WinRM(端口5985)未绑定到本地主机(127.0.0.1)或所有IP(0.0.0.0)。(注意,4的PID不是WinRM服务,而是系统,我想这就是它的工作原理)。这是使用netsh http配置的(我不知道是否还有其他方法),但由于它似乎也会影响IIS绑定,因此应该小心。我通过跑步解决了这个问题
netsh http add ipaddress=127.0.0.1
(我也做了iisreset,可能没有必要)。这实际上使WinRM可以通过localhost访问,我想这就是这些工具所期望的。在这之后,所有WinRM的东西似乎都工作了。
Robin CM的IT博客上有一篇很好的帖子,介绍了其他可能的解决方案,我在自己的博客帖子中进行了更深入的探讨(尽管其中一些与此无关)。
您的主机似乎一直拒绝客户端。
尝试通过以下操作获取主机的凭据:
$c = Get-Credential
New-CimSession -ComputerName [name] -Credential $c
然后,输入主机的用户名和密码。
如果仍然不起作用,请尝试手动将您的客户端添加为主机上的授权用户。
当我试图将我的一台机器用作WinRM客户端以连接到另一台机器时,我的一台机器出现问题。场景是: Window 7上的问题机器(VM A)已经启用了WinRM(已经运行winrm快速配置,Enable-PSRemoting),然后我将远程机器(VM C)的IP添加到VM A的受信任主机中,然后运行Test-WSMan,我得到这个错误Test-WSMan: 客户端无法连接到请求中指定的目标。验证目标上
本文向大家介绍PowerShell小技巧之启动远程桌面连接,包括了PowerShell小技巧之启动远程桌面连接的使用技巧和注意事项,需要的朋友参考一下 以Windows Server 2012 R2为例,其实非常简单。先启用远程连接: 然后再启用几条防火墙规则即可,用PowerShell(需要管理员权限)更显其威武:
本文向大家介绍Powershell小技巧之开启关闭远程连接,包括了Powershell小技巧之开启关闭远程连接的使用技巧和注意事项,需要的朋友参考一下 如果你要通过Powershell远程访问电脑。这时你必须在对方电脑(你想要访问的电脑),用管理员权限执行下面代码: 一旦你这样执行了代码,你只要拥有目标电脑的本地管理员权限就能从其它窗体访问这台电脑了。当两台电脑在同一个域内你就可以直接指定计算机名
问题内容: 我正在尝试打开与远程计算机上运行的Java应用程序的JMX连接。 应用程序JVM配置有以下选项: com.sun.management.jmxremote com.sun.management.jmxremote.port = 1088 com.sun.management.jmxremote.authenticate = false com.sun.management.jmxrem
问题内容: 我一直在localhost上建立一个网络,当我尝试在主机上移动它时,它显示了很多错误。似乎无法连接到我的本地数据库。这是代码: 这是输出: 感谢帮助 问题答案: 这是mysql用户权限问题。例如,使用phpmyadmin创建一个新用户,如果从localhost连接,则将其主机设置为localhost;如果从外部连接,则将其主机设置为%。
问题内容: 由于某些原因,我无法远程连接到我的MySQL服务器。我已经尝试了一切,但仍然遇到错误。 现在,我尝试跑步 还是一无所有!我做错了什么? 编辑 :已注释掉绑定ip。 问题答案: 要将MySQL暴露给localhost以外的任何东西,您将必须具有以下行 对于mysql 5.6及以下版本 取消注释并分配给您的计算机IP地址,并且不环回 对于mysql 5.7及更高版本 取消注释并分配给您的计