无法从 Server 2012 R2 向 Windows 8 调用命令

无法从 Server 2012 R2 向 Windows 8 调用命令

我正在尝试invoke-command从 Windows Server 2012 虚拟机运行到 Windows 8 虚拟机。这些计算机位于同一域和同一子网中。我Enable-PSRemoting -force在 Windows 8 计算机上运行了该命令并收到以下输出:

WinRM has been updated to receive requests. 
WinRM service type changed successfully. 
WinRM service started.

WinRM has been updated for remote management. 
Created a WinRM listener on HTTP://* to accept WS-Man requests to any IP on this machine. 
WinRM firewall exception enabled.

但是,当我返回服务器并尝试时invoke-command,出现此错误:

[WINDOWS8VIRTUAL] Connecting to remote server WINDOWS8VIRTUAL failed with the following error message : WinRM cannot complete the operation. Verify that the specified computer name is valid, that the computer is accessible over the network, and that a firewall exception for the WinRM service is enabled and allows access from this computer. By default, the WinRM firewall exception for public profiles limits access to remote computers within the same local subnet. For more information, see the about_Remote_Troubleshooting Help topic.
    + CategoryInfo          : OpenError: (WINDOWS8VIRTUAL:String) [], PSRemotingTransportException
    + FullyQualifiedErrorId : WinRMOperationTimeout,PSSessionStateBroken

有任何想法吗?

答案1

需要找到原因WinRMOperationTimeout

您的 Windows 2012 服务器和 Windows 8 是否可以相互通信(ping)?

FIREWALL RULE是否存在可能阻止连接的策略(组等) ?

请提供更多详细信息并尝试以下测试:

  • 提供两台机器的 ipconfig /all 的结果吗?
  • 检查主机名、whoami 等的结果。名称是否与您的 PS 输入相匹配?
  • 在 AD(Active Directory)中,您的 Windows 8 机器是否列在计算机或其他组织单位中?
  • 在 PS 中检查当前的 WinRm 配置:WinRM get WinRM/config
  • 检查防火墙配置中 WinRM 默认端口(HTTP:595,HTTPS:5986)是否打开。
  • 测试 WinRM 服务是否在本地或远程计算机上运行。
  • 在 PS 中运行:Test-WSMan -computer "YOUR_TEST_PC_NAME"

以下是更多来源:

答案2

您必须启用 CredSSP(凭据安全支持提供程序)才能传递凭据

在您的工作站上,运行以下命令:

Enable-WSManCredSSP -Role Client -DelegateComputer *.yourdomain.com -Force

这将配置您的系统将 CredSSP 身份验证传递给 yourdomain.com 上的任何远程计算机 - 代替'.mydomain.com' 您可以使用'' 到委托计算机以便将 CredSSP 传递到任何计算机或服务器的 FQDN(例如:“someserver.mydomain.com”)以允许将 SSP 凭据仅传递到该服务器。

在您的服务器上,运行以下命令:

Enable-WSMaCredSSP -Role Server –Force

这会将您的服务器配置为接受来自任何远程计算机的 CredSSP 身份验证。

然后你的 Invoke 命令将采取额外的切换:

-Authentication CredSSP

例子:

$cred = get-credential
Invoke-Command -credential $cred -Computer "TheServer" -Authentication CredSSP -ScriptBlock {do a thing}

答案3

在 Windows 服务器上运行以下命令:

winrm e winrm/config/listener

并仔细检查 WinRM 服务正在监听的主机和端口。

默认HTTP端口为5985,默认HTTPS端口为5986。

然后确保已启用该功能:

winrm set winrm/config/Listener?Address=*+Transport=HTTP @{Enabled="true"}

要打印所有设置,请运行:WinRM get WinRM/config

要测试本地服务,请在 PS 中运行:test-wsman localhost

文档页面:Windows 远程管理的安装和配置


如果您要连接到 Amazon EC2 实例,请确保您已解除该实例安全组中必要端口的阻塞。

相关内容