2016-03-07 218 views
0

我使用Windows Server 2003,现在我有一个脚本来重新启动一个特定服务,有人可以指导我如何并行运行此脚本?我已经使用的启动工作,但似乎只在底色上运行,但仍连续的,下面是我的脚本:powershell并行运行脚本

文件名:重新启动-service.ps1

$start = Get-Date 
$Serverlist = Get-Content -path C:\Computers.txt 

ForEach ($Server in $Serverlist){ 
start-job -scriptblock {param($Server) Restart-Service -InputObject $(Get-Service -ComputerName $Server -Name "aspnet_state")} -ArgumentList $Server 
} 
Get-Job | Wait-Job 
Get-Job | Receive-Job 
$end = Get-Date 
$timespan = $end - $start 
$seconds = $timespan.TotalSeconds 
Write-Host "This took me $seconds seconds." 

或本

$start = Get-Date 
$Server = Get-Content -path C:\Computers.txt 

$scriptblock = { 
    Param($Server) 
    Restart-Service -InputObject $(Get-Service -ComputerName $Server -Name "aspnet_state") 
} 
$Server | % {Start-Job -Scriptblock $scriptblock -ArgumentList $_ | Out-Null} 
Get-Job | Wait-Job | Receive-Job 

$end = Get-Date 
$timespan = $end - $start 
$seconds = $timespan.TotalSeconds 
Write-Host "This took me $seconds seconds." 

但我只能看到结果,但看不到我的服务器的IP的任何结果相关的信息,有人可以帮助我如何改善它...

回答

0

这是方向,调整它为你的具体需求......添加计时器等等

$Serverlist = Get-Content -path C:\Computers.txt 

Foreach ($Server in $Serverlist) 
{ 
    Start-Job -Name "$Server-Job" -ScriptBlock { 
    Get-Service -ComputerName $args[0] -Name "aspnet_state" | Restart-Service 
    } -ArgumentList $Server 
} 

它将为每个服务器创建一个服务器名工作,把工作状态/信息,使用:

Get-Job | Receive-Job 
+0

感谢Avshalom,它运作良好,非常有帮助。 – Ted