powershell用的比较多的应该是对网络中机器的管理。管理的过程中,免不了要对远程机器进行控制、
根据上一篇PowerShell(一)基础知识的介绍,在本机中都需要一定权限,远程机器也是一样。
不过远程控制时,被控制的机器上的设置就和上一篇的不一样了。

比如你想用本机来控制远程的机器
远程机器的设置,主要是,在管理员权限下的PowerShell控制台中执行
Enable-PSRemoting -force

本机和远程机器如果在同一个域中,就只需要做上面的设置了。
如果本机和远程机器不在同一个域,则可以通过设置域信任达到相同的目标。
如果本机和远程机器都不在域中,则需要将远程机器加入到本机的TrustedHosts
set-item wsman:localhost\client\trustedhosts -value <远程机器名>

然后就可以建立远程会话了
New-PSSession -ComputerName <远程机器名>
在通过Invoke-Command就可以让在远程机器上运行对应的脚本了
比如下面的,连接远程机器,判断某个应用是否启动,如果没有启动则启动它,如果启动了,就提示已经在运行

function StartApp([string]$app,[string]$machine) 
{ 
### 
Get-PSSession | Remove-PSSession 
$ses = New-PSSession -ComputerName $machine  
Write-Host "check if the $app is running" 
$ifrunning = Invoke-Command -Session $ses -ScriptBlock {param($appname) Get-Process | Where-Object {$_.Name -eq $appname}} -ArgumentList $app 
if($ifrunning -eq $null) 
{ 
Write-Host "Starting application:$app on $machine" 
([WMICLASS]"\\$machine\ROOT\CIMV2:win32_process").Create($app) 
} 
else 
{ 
Write-Host "the $app is already running" 
} 

Write-Host "finish" 
#Remove-PSSession $ses 
} 

可以通过测试StartApp "notepad" "localhost"来测试下。(嗯,好吧,未加一些验证机制)

参考:http://blogs.msdn.com/b/wmi/archive/2009/07/24/powershell-remoting-between-two-workgroup-machines.aspx


agentwx
354 声望23 粉丝

引用和评论

0 条评论