如何使用 PowerShell 或命令行列出所有 Windows 服务


您在屏幕上看到的正在运行的应用程序只是 Windows 中发生的情况的一小部分。从管理设备驱动程序到确保安全性,一堆后台进程维护着 Windows PC 的正常运行。

对于任何管理多台计算机的系统管理员来说,能够查看这些关键服务的状态非常重要。任务管理器方法对此来说太慢,并且您无法使用脚本将其自动化。

解决方案?命令行工具。使用命令提示符或 电源外壳 ,您可以快速了解系统上运行的可操作 Microsoft 服务,帮助您快速诊断任何问题。

在命令提示符中列出 Windows 服务

尽管不如 Windows PowerShell 灵活或强大,命令提示符 对于系统管理员来说仍然是一个出色的工具。您可以使用queryex 命令获取活动和禁用服务的状态,然后使用使用taskkill命令 结束讨厌的进程。

  1. 要使用 queryex 命令,请以管理员身份运行命令提示符。您可以通过在开始菜单中搜索cmd来找到该应用程序。
  2. 使用 sc queryex 命令的方法有多种。 Type 和 State 是两个最常用的参数。例如,输入以下命令可查看所有 Windows 进程:
  3. sc queryex type=service state=all

    1. 默认视图可能有点让人不知所措。您可以仅显示进程名称以使列表更易于解析:
    2. sc queryex 类型=服务状态=全部 |查找 /i“SERVICE_NAME:”

      1. 默认情况下,该命令列出所有活动进程。要查找不活动的状态,请修改状态参数:
      2. sc queryex type=service state=inactive

        1. 您还可以通过名称查询特定进程的状态。这对于系统管理员来说非常有用,因为他们可以设置批处理文件来同时检查多个进程。这是一个例子:
        2. sc查询DeviceInstall

          在 PowerShell 中列出 Windows 服务

          .

          电源外壳 旨在成为现代 Windows 的专用命令行 shell。因此,它可以通过命令访问几乎所有操作系统组件,Windows 服务也不例外。

          PowerShell 的优点是您可以轻松地实现自动化。所有 PowerShell 命令都可以编译为复杂的脚本,使您可以轻松地在多台 PC 上设置系统管理任务。

          1. 首先打开 PowerShell。您可以在开始菜单中搜索它;只需确保运行提升的实例(即以管理员身份)。
            1. 在 PowerShell 上列出 Windows 服务的最简单命令是 Get-Service 。它显示您计算机上的所有服务及其状态和名称。唯一的问题是服务列表可能会很长。
              1. 使用Get-Service 时,最好将列表导出到文本文件。您可以使用管道来完成此操作,如下所示:
              2. 获取服务 |输出文件“C:\logs\All_Services.txt”

                1. 要查找特定服务的状态,请使用带有服务名称的 Get-Service 命令。您可以通过用逗号分隔名称来请求多个进程的状态。
                2. 获取服务 CryptSvc、COMSysApp

                  1. 管道还可用于将 Get-Service cmdlet 与 Where-Object 函数结合起来,并按状态过滤结果。以下命令通过获取所有正在运行的服务来说明这一点:
                  2. 获取服务 | Where-Object {$_.Status -EQ“正在运行”}

                    检查服务依赖关系

                    任何复杂的流程都会分为多个相互依赖的服务。这就是为什么仅仅获取特定服务的状态通常是不够的。您还需要检查该服务所依赖的服务的状态。

                    1. 要查看特定服务所需的服务,请将 -RequiredServices 标志与 Get-Service cmdlet 结合使用。这是一个例子:
                    2. .

                      获取服务-名称 CryptSvc –RequiredServices

                      1. 同样,要获取依赖于特定服务的服务列表,请利用 -DependentServices 标志。
                      2. 获取服务-名称 CryptSvc -DependentServices

                        这两个标志对于编写自动启动或停止 Windows 服务的脚本至关重要,因为它们为您提供了一种跟踪与受影响服务连接的所有服务的方法。

                        列出远程计算机上的 Windows 服务

                        PowerShell 方法不仅限于本地计算机。您也可以使用具有与上述相同语法的 Get-Service cmdlet 来查询远程 PC 的进程。只需在末尾附加 -ComputerName 标志即可指定要从哪台远程计算机检索信息。

                        这是一个例子:

                        获取服务 CryptSvc -ComputerName Workstation7

                        在 PowerShell 中管理 Windows 服务

                        获取服务状态并不是您在 Windows PowerShell 中可以做的唯一事情。作为一个成熟的脚本环境,它提供了所有 GUI 选项的脚本替代方案。

                        Powershell cmdlet 可以停止、启动、重新启动,甚至修改服务。与自动化的 Get-Service 命令配合使用,可以编写 PowerShell 脚本来完全自动化日常系统管理任务。

                        1. 除了查询服务的状态之外,您还可以使用PowerShell来管理它们。启动或停止服务可以使用单个命令来完成,只需要服务的名称。例如,您可以通过以下方式停止服务:
                        2. 停止服务-Name Spooler

                          1. 启动服务的过程类似:
                          2. 启动服务-Name Spooler

                            1. 如果服务无法正常工作,您还可以选择重新启动它:
                            2. 重新启动服务-Name Spooler

                              1. 还有 Set-Service cmdlet,可用于更改服务的属性。这里我们禁用Print Spooler服务的自动启动:
                              2. .

                                Set-Service ‘Spooler’ -StartupType 已禁用

                                列出 Windows 服务的最佳方式是什么?

                                无论您运行的是 Windows 10 还是 Windows Server,查看所有 Windows 服务的列表都会很方便。您可以诊断关键系统功能的问题或停止不必要的微软服务 以提高性能。

                                为此,PowerShell 是最佳选择。虽然您可以在命令提示符中获取服务列表,但 PowerShell 提供的附加功能更有用。

                                您可以使用 PowerShell cmdlet 获取 Windows 进程的服务状态,并按其状态或其他参数进行过滤。还可以轻松确定依赖的服务并根据需要启动或停止它们。

                                .

                                相关文章:


                                26.06.2022