开启并配置WinRM
被远程机器执行
前提:被远程的机器上开启可WinRM
如果连接失败;则需要在被远程的机器
上运行:
Enable-PSRemoting -SkipNetworkProfileCheck -Force
验证方法:
- WinRM处于Running状态
- 防火墙rule处于Allow状态
远程机器执行
如果远程的计算机没有加入域(这里注意是执行远程指令的机器而不是被远程的机器);则需要为其设定:
#设定
Set-Item WSMan:\localhost\Client\TrustedHosts -Value "192.168.11.199" -Force
#查看设定结果
Get-Item WSMan:\localhost\Client\TrustedHosts
再说一遍:这条指令在执行远程指令的机器上执行。
命令中的
"192.168.11.199"
是被远程的机器
在远程机器上测试是否可以正常连接到被远程机器
PS C:\Users\Administrator> Test-WSMan "192.168.11.199"
wsmid : http://schemas.dmtf.org/wbem/wsman/identity/1/wsmanidentity.xsd
ProtocolVersion : http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd
ProductVendor : Microsoft Corporation
ProductVersion : OS: 0.0.0 SP: 0.0 Stack: 3.0
PS C:\Users\Administrator>
更详细的内容,看我另一篇文章:https://blog.51cto.com/mlxia/5682985
使用Invoke-command
在本机执行下面的命令;
#本机
PS C:\Users\Administrator> hostname
PCA001
PS C:\Users\Administrator>
#远程计算机的访问凭证
PS C:\Users\Administrator> $credential = Get-Credential
位于命令管道位置 1 的 cmdlet Get-Credential
请为以下参数提供值:
Credential
PS C:\Users\Administrator>
#在远程计算机中执行指令
PS C:\Users\Administrator> Invoke-Command -ComputerName 192.168.11.199 -ScriptBlock {hostname} -Credential $credential
DESKTOP001
PS C:\Users\Administrator> Invoke-Command -ComputerName 192.168.11.199 -ScriptBlock {ipconfig} -Credential $credential
Windows IP 配置
以太网适配器 以太网:
连接特定的 DNS 后缀 . . . . . . . :
本地链接 IPv6 地址. . . . . . . . : fe80::4ad6:7f6c:bde8:956d%18
IPv4 地址 . . . . . . . . . . . . : 192.168.11.199
子网掩码 . . . . . . . . . . . . : 255.255.255.0
默认网关. . . . . . . . . . . . . : 192.168.11.1
以太网适配器 以太网 2:
媒体状态 . . . . . . . . . . . . : 媒体已断开连接
连接特定的 DNS 后缀 . . . . . . . :
以太网适配器 以太网 3:
媒体状态 . . . . . . . . . . . . : 媒体已断开连接
连接特定的 DNS 后缀 . . . . . . . :
以太网适配器 VMware Network Adapter VMnet1:
连接特定的 DNS 后缀 . . . . . . . :
本地链接 IPv6 地址. . . . . . . . : fe80::9505:3329:f98b:d4b%17
IPv4 地址 . . . . . . . . . . . . : 192.168.183.1
子网掩码 . . . . . . . . . . . . : 255.255.255.0
默认网关. . . . . . . . . . . . . :
以太网适配器 VMware Network Adapter VMnet8:
连接特定的 DNS 后缀 . . . . . . . :
本地链接 IPv6 地址. . . . . . . . : fe80::d4f9:e8fa:bb89:87c9%7
IPv4 地址 . . . . . . . . . . . . : 192.168.106.1
子网掩码 . . . . . . . . . . . . : 255.255.255.0
默认网关. . . . . . . . . . . . . :
PS C:\Users\Administrator>
以脚本的方式执行Invoke-command
脚本内容:
$UserName = "administrator"
$Password = "xxxxxxxx"
$serverip = "192.168.11.199"
$secPassword = ConvertTo-SecureString $Password -AsPlainText –Force
$cred = New-Object System.Management.Automation.PSCredential($UserName,$secPassword)
$result = invoke-command -ComputerName $serverip -Credential $cred -ScriptBlock {
hostname
gwmi win32_operatingsystem
}
$result
$result[0]
也可以将指令参数化
$UserName = "administrator"
$Password = "xxxxxxxx"
$serverip = "192.168.11.199"
$secPassword = ConvertTo-SecureString $Password -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential($UserName,$secPassword)
$a= "win32_operatingsystem"
$b = "balabala.."
$result = invoke-command -ComputerName $serverip -Credential $cred -ScriptBlock {
param($item1, $item2) #使用参数则必需要有这句
hostname
gwmi $item1
} -ArgumentList $a,$b
$result
$result[0]
好了,就简单说这些吧;以上内容,结合工作实际环境,应该可以发生很多奇妙的反应。