在win2008R2和Win7上启用PSRemoting的错误

Ami*_*bha 3 powershell

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

所有VM都在工作组中.
我在每个VM上设置了相同的管理员帐户和相同的pwd.
使用管理员角色在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防火墙例外将无法工作,因为此计算机上的某个网络连接类型设置为Public.将网络连接类型更改为域或专用,然后重试.

小智 5

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

Set-WSManQuickConfig -SkipNetworkProfileCheck
Run Code Online (Sandbox Code Playgroud)

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

  • 参数-SkipNetworkProfileCheck在PowerShell 3.0或更高版本中可用. (2认同)

Ami*_*bha 3

google后,错误已修复,解决方案如下:

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

解决方案:
以管理员角色运行以下cmd。

reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f
Run Code Online (Sandbox Code Playgroud)

错误2:

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

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

Set-Item WSMan:\localhost\Client\TrustedHosts *
Run Code Online (Sandbox Code Playgroud)

错误3:

Set-WSManQuickConfig :WinRM 防火墙例外将不起作用,因为该计算机上的网络连接类型之一设置为公共。将网络连接类型更改为域或专用,然后重试。

解决方案:
参考:http://blogs.msdn.com/b/powershell/archive/2009/04/03/setting-network-location-to-private.aspx
使用管理员角色运行以下 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)}
Run Code Online (Sandbox Code Playgroud)