有一些托管的 Windows 服务的显示名称以通用名称(此处为 NATION)开头。例如:
是否有一些命令可以获取所有服务,例如“NATION-”。最后,我需要使用命令 promt 停止、启动和重新启动此类服务。
sc queryex type= service state= all | find /i "NATION"
/i
进行不区分大小写的搜索type=
之后的空白是故意且必需的使用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
如果您不喜欢旧的 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!"
}
}
}
这里有人可以编写类似的脚本来查找名称以 DODOUber 或 SCSW$ 开头的所有正在运行的服务(美元实际上在服务名称中),将每个服务的启动类型保存到 txt 文件中,停止服务并禁用它们。然后第二个脚本启动所有先前的服务并设置原始启动类型。我尝试使用人工智能来解决这个问题,但没有人做到。非常感谢。
保存为.ps1文件然后执行
powershell -file "path\to your\start stop nation service command file.ps1"