检查PowerShell Remoting是否启用
在Windows Server 2008 R2上以管理员身份运行PowerShell,然后输入
1
|
Enter-PSSession
-ComputerName localhost
|
返回如下截图:
说明该版本默认是没有启用PowerShell Remoting功能。
在Windows Server 2012 R2上,返回如下截图:
在Windows Server 2016上,返回如下截图:
说明在2012和2016上,默认启用了PowerShell Remoting功能。
启用PowerShell Remoting
在Windows Server 2008 R2上,以管理员身份运行PowerShell,然后输入以下脚本:
1
|
Enable-PSRemoting
-Force
|
这个命令会启动WinRM服务,设置为在你的系统上自动启动,并创建一条允许传入连接的防火墙策略。
验证是否启动成功:
配置信任主机
如果你的主机不在域环境,而是在工作组环境,可以配置能够远程访问该主机的可信任列表。
1
|
Set-Item
wsman:\localhost\client\trustedhosts *
|
你也可以将*替换为可信任的局域网主机192.168.11.*
然后,重启WinRM服务使之生效:
1
|
Restart-Service
WinRM
|
测试连接
从访问远程主机的客户端,通过Test-WsMan测试你的配置。这个命令测试远程主机上WinRM服务是否在运行。如果成功完成,你会知道WinRM启用了,可以彼此通信。
1
|
Test-WsMan
szsql05
|
如果命令成功完成,你会看到远程计算机的WinRM服务信息。如果命令失败,会看到错误信息。
执行远程命令
使用Invoke-Command在远程系统上运行命令。语法如下:
1
|
Invoke-Command
-ComputerName COMPUTER -ScriptBlock { COMMAND } -credential USERNAME
|
COMPUTER为计算机的名字;
COMMAND是你要运行的命令;
USERNAME是你想在远程计算机上运行命令的用户名。你会提示输入该用户名的密码。
例如,以用户dx\xucy查看远程计算机szsql05上C盘根目录下的内容,你可以输入如下命令:
1
|
Invoke-Command
-ComputerName szsql05 -ScriptBlock {
Get-ChildItem
C:\ } -credential dx\xucy
|
输入域账号密码后:
开始一个远程会话
使用Enter-PSSession启动一个远程PowerShell会话,这里你可以运行多个命令,而不只运行一个命令:
1
|
Enter-PSSession
-ComputerName COMPUTER -Credential USER
|
本文转自UltraSQL51CTO博客,原文链接: http://blog.51cto.com/ultrasql/1884773,如需转载请自行联系原作者