如何获取所有以常用单词开头的Windows服务名称?

问题描述 投票:0回答:5

有一些托管的 Windows 服务的显示名称以通用名称(此处为 NATION)开头。例如:

  • 国家城市
  • 民族国家
  • 民族村

是否有一些命令可以获取所有服务,例如“NATION-”。最后,我需要使用命令 promt 停止、启动和重新启动此类服务。

command-line windows-services command command-prompt
5个回答
158
投票
sc queryex type= service state= all | find /i "NATION"
  • 使用
    /i
    进行不区分大小写的搜索
  • type=
    之后的空白是故意且必需的

28
投票

使用PowerShell,您可以使用以下内容

Get-Service | Where-Object {$_.displayName.StartsWith("NATION-")} | Select name

这将显示显示名称以“NATION-”开头的所有服务的列表。

您也可以直接停止或启动服务;

Get-Service | Where-Object {$_.displayName.StartsWith("NATION-")} | Stop-Service
Get-Service | Where-Object {$_.displayName.StartsWith("NATION-")} | Start-Service

或者简单地

Get-Service | Where-Object {$_.displayName.StartsWith("NATION-")} | Restart-Service

0
投票

如果您不喜欢旧的 PowerShell 版本,还有另一种方法。

# Create an array of all services running
$GetService = get-service
    
# Iterate throw each service on a host
foreach ($Service in $GetService)
{
    # Get all services starting with "MHS"
    if ($Service.DisplayName.StartsWith("MHS"))
    {
        # Show status of each service
        Write-Host ($Service.DisplayName, $Service.Status, $Service.StartType) -Separator "`t`t`t`t`t|`t"
        
        # Check if a service is service is RUNNING.  
        # Restart all "Automatic" services that currently stopped
        if ($Service.StartType -eq 'Automatic' -and $Service.status -eq 'Stopped' )
        {
            Restart-Service -Name $Service.DisplayName
            Write-Host $Service.DisplayName "|`thas been restarted!"   
        }
    }
}

0
投票

这里有人可以编写类似的脚本来查找名称以 DODOUber 或 SCSW$ 开头的所有正在运行的服务(美元实际上在服务名称中),将每个服务的启动类型保存到 txt 文件中,停止服务并禁用它们。然后第二个脚本启动所有先前的服务并设置原始启动类型。我尝试使用人工智能来解决这个问题,但没有人做到。非常感谢。


-3
投票

保存为.ps1文件然后执行

powershell -file "path\to your\start stop nation service command file.ps1"

© www.soinside.com 2019 - 2024. All rights reserved.