启用某台机器上的PowerShell远程管理是一件简单的事,可以以管理员的权限直接在Powershell控制台上敲入:Enable-PSRemoting -Force,一路yes即可。
但是可能会碰到两类问题。一类是关于公用网络适配器的问题。例如提示说:
PS C:\windows\system32> Enable-PSRemoting
WinRM 快速配置
正在运行命令“Set-WSManQuickConfig”,以使该计算机能够通过 WinRM 服务进行远程管理。
其中包括:
1. 启动或重新启动(如果已启动) WinRM 服务
2. 将 WinRM 服务类型设置为自动启动
3. 创建一个侦听器以接受任意 IP 地址上的请求
4. 对 WS-Management 流量启用防火墙例外(仅适用于 http)。是否继续?
[Y] 是(Y) [A] 全是(A) [N] 否(N) [L] 全否(L) [S] 挂起(S) [?] 帮助 (默认值为“Y”): y
WinRM 已更新为接收请求。
成功更改 WinRM 服务类型。
已启动 WinRM 服务。
已配置 LocalAccountTokenFilterPolicy 以远程向本地用户授予管理权限。Set-WSManQuickConfig : 由于此计算机上的网络连接类型之一设置为公用,因此 WinRM 防火墙例外将不运行。 将网络连接类型更改为域或专用,然后再次尝试。
此时可以打开网络共享中心在窗口的最左边选择更改适配器设置,选择公用网络配置器,临时禁用它,再运行上面的命令。但是在PowerShell 3.0 中多了一个参数-SkipNetworkProfileCheck可以跳过这步网络类型检查。
另外一类问题可能会提示防火墙不能验证,原因是当前使用的语言包和系统的语言包不匹配,就像两个人一个用中文,一个用德文,没有共同语言。遇到这样的问题,一定要确保当前的UI语言和系统的语言匹配。
最后不要忘记将你要连接的远程主机名或IP地址存放在本机的受信任列表中。
Set-Item WSMan:\localhost\client\trustedhosts * -Force
2016-3-17更新
@wanglang0728:
外加一个有时候提醒无法验证防火墙状态,是因为系统语言的问题,比如我的本来是中文版,我下载了英文语言包做了修改,这时候只要改了语言再次开启就好。
原文链接:http://powershell.com/cs/blogs/tips/archive/2012/10/24/firewall-problems-when-enabling-remoting.aspx
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
启动远程访问问题,机器A(win8 psv3.0)发出ps 命令机器,机器B(win8.1 psv4.0)被访问机器。
1.在机器B中执行:enable-psremoting -SkipNetworkProfileCheck 一路yes
2.在机器A中执行:Set-Item WSMan:\localhost\client\trustedhosts [B:ComputerName] 一路yes
3.在机器A中执行:enter-pssession -computername [B:ComputerName] 回车
错误提示为:链接失败,拒绝访问!
是否还需要其他的配置?
请问是不是域环境,另外有没有传递用户凭据。
也可以去机器B的event log中看看。
是域环境,在B中event log没有相关信息。
在B中添加了A的域账号,则enter-pssession 成功。
还有别的方法吗?难道需要再所有被管理的机器中添加一个ps的运行账号么?
A 远程管理 B,至少A得有操作B的权限(账号,域账号和本地账户都可以)。
我目前见过两种情况:
1. 当A的当前用户没有操作B的权限时,你需要指定账号:域账号或者B的本地账户
2.当A的当前用户有操作B的权限时(此时一般都是域账号),不需要指定账户。
其它的就没见过了,不好意思。
外加一个有时候提醒无法验证防火墙状态,是因为系统语言的问题,比如我的本来是中文版,我下载了英文语言包做了修改,这时候只要改了语言再次开启就好。
感谢分享,已经更新在原文中了。