首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何根据PowerShell中服务名称中的关键字启动服务并停止其他类似的服务?

如何根据PowerShell中服务名称中的关键字启动服务并停止其他类似的服务?
EN

Stack Overflow用户
提问于 2022-10-28 18:47:56
回答 1查看 21关注 0票数 0

我有两个更多的服务,它们具有相同的命名约定,如下所示。我正在寻找一种编写PowerShell脚本的方法,它应该检查服务名称,并确保服务正在运行,如果没有启动服务,那么其余的服务就应该停止。当服务启动时,它应该输出该服务已经启动。我的当前脚本只在服务尚未运行时才运行它。感谢你在这里提供帮助。

例如: srvx1,srvx2,srvx3,srvx4等等.

代码语言:javascript
运行
复制
$ServiceName = 'srvx3'
$arrService = Get - Service - Name $ServiceName

while ($arrService.Status - ne 'Running') {

    Start - Service $ServiceName
    write - host $arrService.status
    write - host 'Service starting'
    Start - Sleep - seconds 60
    $arrService.Refresh()
    if ($arrService.Status - eq 'Running') {
        Write - Host 'Service is now Running'
    }
}
EN

回答 1

Stack Overflow用户

发布于 2022-10-28 22:59:58

cmdlet get-service的参数get-service支持*,因此可以这样做:

代码语言:javascript
运行
复制
$ServiceName = 'srvx*'
$arrService = Get-Service -Name $ServiceName

现在,您拥有了数组$arrayService中名称以srv开头的所有服务。

如果您想监视该服务,并且一旦它关闭,您应该将while循环中的条件设置为-eq,而不是-ne,因为您希望while循环执行,直到服务崩溃.否则,它会退出,因为服务正在运行,如果服务出现故障,它将永远不会启动:

代码语言:javascript
运行
复制
#pick specific service out of list of all services
$service = ($arrService | ?{$_.name -eq  'srvx3'})
while ($service.Status -eq 'Running'){
    Start-Sleep -seconds 60
    #refresh status of all services
    $arrService.Refresh()
    If ($service.Status -eq 'Stopped'){
        try {
            $null = $service.start()
            $null = $service.Refresh()
            write-host $service.name $service.status
        }
        Catch {
            write-error "failed to start service $($service.name) - Exception: $_"
            #exit as unable to start service
            return
        }
        #stop all other services if they are running
        ($arrService | ?{$_.name -ne $service.name -and $_.status -eq 'Running'}).Stop()
    }
}

希望我能够很好地理解您,目前,脚本将监视特定服务的状态,如果这个服务下降,脚本将启动它并停止所有其他以定义模式命名的服务。此外,它将继续监视服务,甚至继续监视,如果它启动了服务,它只会在启动服务失败时退出while循环。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74239714

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档