检查 PowerShell 版本

要查看你的 PowerShell 版本,可以在 PowerShell 控制台输入$PSVersionTable,按 Enter 键后,查看 PSVersion 的值。不要省略开头的 $ 。$ 开头后面跟一串字符,表示这是一个变量。PSVersionTable 是环境变量,默认已经有值了。变量名不区分大小写。命令结果类似下图:

上面高亮显示的 PSVersion 5.1.17763.1007 说明当前 PowerShell 的版本是 5.1 。

注:以下命令不能查看 PowerShell 版本。

powershell.exe --version

本文使用的版本是 Windows PowerShell 5.1 ,如果你的 PowerShell 版本比较旧,可以先升级你的 PowerShell 。升级 PowerShell 需要安装 WMF 程序,可以查看微软官方文档 升级现有 Windows PowerShell 。

以管理员身份运行 PowerShell

在进行后面的操作前,先检查当前 PowerShell 是否以管理员身份运行。如下图左上角有“管理员”,说明当前是以管理员身份运行的。要做到这样,可以在 Windows PowerShell 的程序上右键单击,在弹出的菜单中选择 “以管理员身份运行”,点击即可。注:不以管理员身份运行 PowerShell , 后面的操作可能会出现异常。

配置 PowerShell 远程管理

在使用 PowerShell 管理远程计算机之前,需要对计算机进行配置,否则会出现 拒绝访问 等错误提示。如下所示:

PowerShell 连接的客户端和服务器都需要进行配置,配置的步骤很简单。

服务器需要启动 WinRM 服务,需要放开 WinRM 服务的防火墙限制,以及其他配置。这些步骤不需要一个个手动操作,只需要运行一个内置的命令即可全部配置完成。

Enable-PSRemoting

Enable-PSRemoting 会自动执行如下操作:

  • 启动 WinRM 服务
  • 设置 WinRM 服务的启动类型为开机自动启动
  • 创建一个侦听器接收任意 IP 地址的请求
  • 启用 WinRM 服务对应的防火墙规则
  • PowerShell 会话配置
  • 其他操作

运行该命令后,检查看看 WinRM 服务是否已经启动。

Get-Service WinRM

Get-Service 命令可以查看指定服务的运行状态。如下图显示 “Running” , 则表示 WinRM 服务已经启动完成。

服务器还需要给用户设置密码,空密码是无法连接成功的,连接时会显示 拒绝访问 的错误提示。

客户端需要设置信任列表,将服务器加入客户端的信任列表,客户端才允许访问服务器。注:以下操作在客户端计算机执行。

Set-Item WSMan:localhostClientTrustedHosts *

命令最后的星号是必须的,表示将任何计算机加入当前计算机的信任列表。这个星号前面还有一个空格,不能省略。星号也可以替换成服务器的 IP 地址。如果不设置这个,在连接时,可能会出现如下错误提示:

连接远程计算机

配置完成后,使用如下命令即可连接远程计算机。其中的示例 IP 地址要替换成你要连接的目标计算机的实际 IP 地址。使用 IP 地址时,-Credential 参数是必须的,该参数后面的是服务器上的用户名。用户名不区别大小写。注:非客户端计算机的用户名。缺少 -Credential 时,默认使用当前用户,且仅适用于客户端计算机加入域控制的情况下。

Enter-PSSession 192.168.229.146 -Credential administrator

要退出远程管理,执行 exit 命令。