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

Posted

技术标签:

【中文标题】如何获取以常用词开头的所有 Windows 服务名称?【英文标题】:How to get all Windows service names starting with a common word? 【发布时间】:2012-12-02 11:15:05 【问题描述】:

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

国家-城市 民族国家 民族村

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

【问题讨论】:

Powershell 安装在你的机器上?服务器还是工作站?所以? 【参考方案1】:
sc queryex type= service state= all | find /i "NATION"
使用/i 进行不区分大小写的搜索 type= 后面的空格是故意的并且是必需的

【讨论】:

顺便说一句,find 区分大小写,为了更好地搜索,使用 find /i "Nation" microsoft.com/resources/documentation/windows/xp/all/proddocs/… 记得用type=和state=后面的空格,我没有:( 请注意,find 将搜索服务名称并显示名称 - 仅过滤服务名称:sc queryex type= service state= all | find /i "SERVICE_NAME: NATION";)。 sc 可能是Set-Content 的简写。如果是这种情况,请使用sc.exe 太棒了。来自 Linux 的 Windows cmd 行环境毫无意义,所以这都是神奇的调味汁。【参考方案2】:

使用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

【讨论】:

感谢 Wimmel 的回复,但我正在搜索创建一个简单的 .cmd 文件而不是 shell 脚本。一些命令,例如 SC STOP SERVICE_STARTS_WITH("NATION-") [code]Get-Service -Name *NATION-*[/code] 更简单更好!【参考方案3】:

保存为.ps1文件,然后执行

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

【讨论】:

以上是关于如何获取以常用词开头的所有 Windows 服务名称?的主要内容,如果未能解决你的问题,请参考以下文章

SQL 如何查询数据库中所有以DataTable开头的表名

c#中 常用的命名规范

【Linux】Linux开启snmp及查询

如何查看windows机器上oracle数据库实例

将CDM中所有以Relatonship_开头的关系全部重命名,避免生成数据库因为重复关系名报错

如何使用正则表达式在字符串表达式中查找以@开头的变量名?