PowerShell远程连接问题

问题描述 投票:1回答:1

我正在尝试实现PowerShell远程处理(用于在远程服务器上执行PowerShell脚本)。我的远程服务器正在运行Windows Server 2008和PowerShell v2。

从提升的权限PS控制台,我已执行以下cmdlet:

Enable-PSRemoting

回到控制台:

WinRM已设置为在此计算机上接收请求。

WinRM已经设置为在此计算机上进行远程管理。

在客户端计算机上的提升的PowerShell会话中,我执行了以下cmdlet:

Enter-PSSession –ComputerName [remote_server_name]

这次,回到控制台:

Enter-PSSession:连接到远程服务器[remote_server_name]失败,并显示以下错误消息:客户端无法连接到请求中指定的目标。验证目标上的服务是否正在运行并且正在接受请求。查阅目标上运行的WS-Management服务的日志和文档,最常见的是IIS或WinRM。如果目标是WinRM服务,请在目标上运行以下命令以分析和配置WinRM服务:“winrm quickconfig”。有关详细信息,请参阅about_Remote_Troubleshooting帮助主题。

在行:1个字符:1

+ Enter_PSSession -ComputerName [remote_server_name]

+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ CategoryInfo:无效/参数:([remote_server_name]:string)[Enter-PSSession],PSRemotingTransportException

+ FullyQualifiedErrorId:CreateRemoteRunspaceFailed

我根据错误消息建议执行了“winrm quickconfig”。再一次,回到控制台:

WinRM已设置为在此计算机上接收请求。

WinRM已经设置为在此计算机上进行远程管理。

重试

Enter-PSSession –ComputerName [remote_server_name]

从客户端计算机返回相同的错误。

我仔细检查了WinRM服务是否在远程服务器上运行。 Windows远程管理(HTTP-In)防火墙规则配置为TCP协议,本地端口5985和所有远程端口。

即使我执行

Get-Service WinRM –ComputerName [remote_server_name]

从客户端机器,我们看到返回到控制台,确认WinRM服务确实在远程服务器上运行:

状态名称DisplayName

------ ---- -----------

运行WinRM Windows远程管理(WS-Manag ...

在远程计算机上执行以下命令

WinRM Enumerate WinRM/Config/Listener

返回到控制台,演示正确的端口是否打开:

听众[来源=“GPO”]

地址= *

港口= 5985

主机名Enabled = 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"
}

返回以下错误消息:

New-Object:使用“2”参数调用“.ctor”的异常:“由于目标机器主动拒绝它,因此无法建立连接[remote_server_ipaddress]:5985”

在行:4 char:15

+ ... connection = New-Object System.Net.Sockets.TcpClient($ ip address,$ port ...

+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ CategoryInfo:InvalidOperation:(:) [New-Object],MethodInvocationException

+ FullyQualifiedErrorId:ConstructorInvokedThrowException,Microsoft.PowerShell.Commands.NewObjectCommand

我有另一台远程服务器,运行带有PowerShell v4的Windows Server 2012 R2。我已经在这个盒子上启用了PS remoting而没有问题,可以从同一个客户端远程执行PS脚本。

那么,我错过了什么? PowerShell版本之间是否存在兼容性问题?

我的客户端PC正在运行PowerShell 5,我正常运行的远程服务器正在运行PowerShell 4,我的故障远程服务器正在运行PowerShell 2。

非常欢迎见解,指导,建议。谢谢你的期待。

更新:

我已经将测试虚拟机上的.Net Framework更新为.Net 4.7.2,并在受影响的虚拟机上安装了PowerShell 4(与正常运行的盒子相同)。

在比较我工作的VM和受影响的计算机之间的WinRM相关注册表项时,我找到了密钥:

HKLM \ SOFTWARE \微软\的Windows \ CurrentVersion \ WSMAN \服务

在工作虚拟机上,我找到了一个32位的“允许远程请求”,其值为1.受影响的计算机的注册表中缺少此条目。我添加了它,重启了机器,重试了连接请求。

不过,同样的问题仍然存在。

powershell powershell-remoting winrm
1个回答
0
投票

您的主机似乎一直拒绝客户端计算机。

尝试通过执行以下操作获取主机的凭据:

    $c = Get-Credential        
    New-CimSession -ComputerName [name] -Credential $c        

然后,输入您的主机用户名和密码。

如果仍然无效,请尝试在主机上手动将客户端添加为授权用户。

© www.soinside.com 2019 - 2024. All rights reserved.