在win2008R2和Win7上启用PSRemoting的错误

时间:2014-11-24 09:51:33

标签: powershell

今天我需要在W2008R2和Win7上启用PSRemoting:

所有虚拟机都在工作组中 我在每个VM上设置了相同的管理员帐户和相同的密码 在powershell中使用管理员角色运行Enable-PSRemoting 但是我仍然面临以下错误:

错误1:

  

Set-WSManQuickConfig:访问被拒绝。

错误2:

  

[192.168.23.2]连接到远程服务器失败,并出现以下情况   错误消息:WinRM客户端无法处理该请求。如果   身份验证方案与Kerberos不同,或者如果是客户端   如果计算机未加入域,则必须使用HTTPS传输   或者必须将目标计算机添加到TrustedHosts   配置设置。使用winrm.cmd配置TrustedHosts。注意   TrustedHosts列表中的计算机可能未经过身份验证。   您可以通过运行以下命令获得有关该信息的更多信息   命令:winrm help config。有关更多信息,请参阅   about_Remote_Troubleshooting帮助主题。       + CategoryInfo:OpenError:(:) [],PSRemotingTransportException       + FullyQualifiedErrorId:PSSessionStateBroken

错误3:

  

Set-WSManQuickConfig:WinRM防火墙例外将无效   此计算机上的某个网络连接类型设置为“公共”。   将网络连接类型更改为域或专用,然后尝试   试。

2 个答案:

答案 0 :(得分:5)

对于错误3,请运行以下命令:

Set-WSManQuickConfig -SkipNetworkProfileCheck

连接网络时,它将设置为“公共”,“私有”或“域”。如果当前配置文件设置为“公共”,则Set-WSManQuickConfig将失败并显示该消息。您可以更改它(如果系统允许您)或跳过配置文件检查。

答案 1 :(得分:1)

google之后,错误已通过以下解决方案修复:

错误1:
Set-WSManQuickConfig:访问被拒绝。

<强>解决方案:
使用管理员角色运行以下cmd。

reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f

错误2:

  

如果身份验证方案与Kerberos不同,或者如果是   客户端计算机未加入域,然后HTTPS传输必须   使用或必须将目标计算机添加到TrustedHosts   配置设置。

<强>解决方案:
在客户端计算机上运行以下cmd

Set-Item WSMan:\localhost\Client\TrustedHosts *

错误3:

  

Set-WSManQuickConfig:WinRM防火墙例外将无效   此计算机上的某个网络连接类型设置为“公共”。   将网络连接类型更改为域或专用,然后尝试   试。

<强>解决方案:
参考:http://blogs.msdn.com/b/powershell/archive/2009/04/03/setting-network-location-to-private.aspx
使用adminsitrator角色运行以下ps脚本:

#Skip network location setting for pre-Vista operating systems 
if([environment]::OSVersion.version.Major -lt 6) { return } 

#Skip network location setting if local machine is joined to a domain. 
if(1,3,4,5 -contains (Get-WmiObject win32_computersystem).DomainRole) { return } 

#Get network connections 
$networkListManager = [Activator]::CreateInstance([Type]::GetTypeFromCLSID([Guid]"{DCB00C01-570F-4A9B-8D69-199FDBA5723B}")) 
$connections = $networkListManager.GetNetworkConnections() 

#Set network location to Private for all networks 
$connections | % {$_.GetNetwork().SetCategory(1)}