【问题标题】:Checking services in parallel [duplicate]并行检查服务[重复]
【发布时间】:2016-03-10 12:08:28
【问题描述】:

我正在尝试检查近 2K 台服务器的服务状态,如果服务处于停止状态,则重新启动该服务。我正在尝试使用foreach -parallel 来做这件事,但它不起作用。工作流也不支持$A.start()

workflow testWorkflow {
    foreach -parallel ($server in $servers) {
        $A = Get-Service W3SVC -ComputerName $server
        if ($A.Status -eq "Stopped") {
            $server | Out-File $FileName2 -Append
            $A.start() 
            Write-Host $A.name "Started Successfully on" $server 
        } elseif ($A.status -eq "Running") {
            Write-Host -ForegroundColor Yellow $A.name "is running"
        } elseif (!$?) {
            Out-File $FileName1 -Append -InputObject $server -Encoding Ascii
        }
    }
}

【问题讨论】:

    标签: powershell parallel.foreach


    【解决方案1】:

    查看-asjob 参数或start-Job/get-job/receive-job cmdlet。

    您还可以使用start-service servicename 启动服务。

    【讨论】:

    • 工作对 2k 台服务器不利,您最好使用运行空间或工作流
    • @Avshalom 请详细说明。
    • @AnsgarWiechers,Jobs 并不是真正的多线程,它使用不同的 PowerShell 进程,每个进程有一个线程,数据也被反序列化,服务器数量和内存/cpu 的开销它需要使它不是一个好的解决方案,相反我建议使用运行空间
    • @Avshalom 听起来很有趣,你能给个参考吗?现在还不知道。
    猜你喜欢
    • 2013-04-04
    • 1970-01-01
    • 1970-01-01
    • 2013-04-07
    • 2013-11-24
    • 2015-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多