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://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。