SC(Service Control)、Get-Service、Servy、Winsw、NSSM、AlwaysUp 和 FireDaemon Pro 都是用于在 Windows 操作系统中将普通应用程序作为服务运行的工具。它们各自有不同的功能、特点和使用场景。以下是这些工具的对比表格:

使用 SC 控制服务 - Win32 apps | Microsoft Learn

sc.exe create | Microsoft Learn

Get-Service (Microsoft.PowerShell.Management) - PowerShell | Microsoft Learn

管理服务 - PowerShell | Microsoft Learn

NSSM - the Non-Sucking Service Manager

GitHub - xxnuo/Nssm-Chinese: Nssm_ ch - Windows 系统服务管理器 提供GUI管理Win系统服务的添加、修改、删除

WinSW-Windows (WinSW) · GitHub

GitHub - winsw/winsw: A wrapper executable that can run any executable as a Windows service, in a permissive license.

GitHub - always-up-app/always-up-app

Download AlwaysUp | Free 30 Day Trial

GitHub - aelassas/servy: Turn Any App into a Native Windows Service - Modern Open-Source Alternative to NSSM, WinSW, AlwaysUp & FireDaemon

Servy - Turn Any App into a Native Windows Service

 

SnowShot_2025-11-20_14-16-12

 

SnowShot_2025-11-20_13-56-39

开发一个 Windows Services 服务全方位实时监测健康状态系统,可以帮助我们监控系统服务的运行状态、响应时间、资源消耗等,及时发现并处理异常。以下是一个开发文档的大纲,涵盖系统需求、设计方案、功能实现及测试等各个方面。


Windows Services 服务全方位实时监测健康状态系统开发文档

1. 项目概述

本系统旨在监控 Windows 服务的运行健康状态,包括服务是否正常运行、资源消耗(如 CPU、内存)、服务响应时间等。通过实时监控,可以在服务出现故障或异常时及时报警,确保系统的稳定性和可靠性。

2. 系统需求

2.1 功能需求

  • 服务状态监控:实时监测 Windows 服务的运行状态,识别是否有停止、崩溃或挂起的服务。
  • 资源消耗监控:监控每个服务的 CPU、内存等资源消耗,防止资源泄漏或过度消耗。
  • 响应时间监控:定期检查服务的响应时间,超过预设阈值时触发警报。
  • 报警机制:在服务停止或资源消耗异常时,自动触发警报(如邮件、短信、Web通知等)。
  • 日志记录:记录服务的健康状态变化和监控结果,为故障排查提供日志支持。
  • 可视化面板:通过图形界面展示各服务的健康状态、资源消耗等数据。

2.2 性能需求

  • 实时性:监控系统必须具备高实时性,能够在服务状态变化时迅速响应。
  • 可靠性:系统必须稳定运行,能够长时间监控多服务,不受系统负载影响。
  • 扩展性:系统能够支持新增服务监控,支持多台机器或分布式系统的扩展。

2.3 技术需求

  • 开发语言:使用 C# 或 Python 开发服务监控系统,结合 Windows Management Instrumentation (WMI)、Performance Counters 或 Windows API 进行监控。
  • 数据库:使用 SQL Server 或 MySQL 存储历史数据,记录服务的运行状态、资源消耗等信息。
  • 界面技术:使用 WinForms、WPF(Windows Presentation Foundation)或 Web 界面进行展示。
  • 通知机制:集成邮件发送、Web API 或第三方服务(如 Slack、Twilio)进行报警。

3. 系统设计

3.1 系统架构

本系统采用客户端-服务器架构,客户端监控单个服务或单台机器的健康状态,数据实时上传至服务器进行汇总分析,最终呈现给管理员或运维人员。

  • 客户端:负责监控指定服务的健康状态,收集数据,并通过网络将数据上传至服务器。
  • 服务器:负责处理客户端上传的数据,分析健康状态,触发报警,并将数据展示在可视化面板。
  • 数据库:存储历史数据,支持快速查询与分析。

3.2 服务监控模块

服务监控模块的核心功能是通过 Windows API 或 WMI 接口获取服务的运行状态。可以通过以下方法进行监控:

  • 获取服务状态:使用 sc query 命令或 WMI 查询服务状态(Win32_Service)。
  • 获取资源消耗:通过 Performance Counters(性能计数器)获取每个服务的 CPU、内存使用情况。
  • 响应时间检测:定期通过 HTTP 请求或自定义的 TCP 服务请求检测服务的响应时间。

3.3 数据存储模块

使用关系型数据库(如 SQL Server 或 MySQL)来存储服务状态、资源消耗、响应时间等信息,数据表设计如下:

  • Service_Status 表:记录服务的状态(启动、停止、崩溃等)、时间戳等。
  • Service_Resource_Usage 表:记录服务的 CPU 和内存使用情况、时间戳等。
  • Service_Response_Time 表:记录服务的响应时间、时间戳等。

3.4 可视化模块

提供一个图形化界面或 Web 面板,实时展示服务健康状态、资源消耗和响应时间等信息。界面应包括以下几个部分:

  • 服务状态概览:显示所有监控服务的当前状态,异常服务以红色标记。
  • 资源消耗:使用图表展示各服务的 CPU 和内存使用情况。
  • 响应时间:展示服务的平均响应时间,超过阈值时高亮显示。
  • 报警记录:列出所有触发的报警事件。

3.5 报警机制

系统在发现异常时,通过以下方式进行报警:

  • 邮件报警:通过 SMTP 发送邮件通知管理员。
  • Web 推送:通过 WebSocket 或第三方 API(如 Slack)推送报警信息。
  • 短信通知:使用 Twilio 等短信服务发送短信。

4. 实现步骤

4.1 环境搭建

  • 安装并配置开发工具,如 Visual Studio、Python 开发环境等。
  • 安装并配置数据库,如 SQL Server。
  • 配置邮件发送服务或短信通知服务(如 Twilio)。

4.2 服务监控实现

  • 使用 sc query 或 WMI 接口获取服务状态信息。
  • 使用 Performance Counters API 获取服务的 CPU 和内存使用情况。
  • 实现自定义脚本或代理检测服务的响应时间。

4.3 数据存储和分析

  • 创建数据库表格以存储监控数据。
  • 定期将监控数据上传至数据库,并分析服务的健康状况。
  • 设置阈值,超过阈值触发报警。

4.4 可视化面板实现

  • 使用 WinForms、WPF 或 Web 技术(如 React、Angular)展示数据。
  • 图形化显示每个服务的状态、资源消耗和响应时间。
  • 提供实时刷新功能,确保界面始终展示最新的状态。

4.5 报警系统实现

  • 配置邮件、短信和 Web 推送报警。
  • 在监控脚本中加入报警逻辑,检测到异常时触发报警。

4.6 测试和调试

  • 测试服务监控的准确性,确保能够正确检测服务状态、资源消耗等信息。
  • 测试报警机制,确保当服务出现异常时能够及时通知管理员。

5. 测试与部署

5.1 测试方案

  • 单元测试:测试每个模块的基本功能,确保监控、数据存储、报警等功能正常工作。
  • 集成测试:测试系统各个模块间的协作,确保数据流通畅无误。
  • 压力测试:模拟高负载情况下,测试系统的性能和稳定性。
  • 用户验收测试(UAT):由最终用户进行测试,确认系统是否满足业务需求。

5.2 部署方案

  • 部署客户端应用到目标机器上,配置监控的服务。
  • 部署数据库并配置备份策略。
  • 部署服务器应用,配置报警和可视化面板。
  • 确保系统的日志和监控功能能够持久运行,不会受到重启或故障的影响。

此文档概述了 Windows Services 服务全方位实时监测健康状态系统的开发流程、架构设计和实现步骤。通过服务状态监控、资源消耗监控、响应时间监控以及报警机制,本系统可以有效地帮助运维人员实时掌握系统服务的健康状况,并在服务异常时及时响应。

该系统能够提升系统稳定性,减少故障发生时间,并为故障排查提供必要的数据支持。


要实现自动化部署,通过批量安装创建服务,管理服务的启动行为,保护、实时监控、自动启动、退出自动启动以及闪退强制启动等,你可以结合 sc create 命令和 PowerShell 脚本来完成。以下是步骤和实现方法:

1. 使用 sc create 命令创建服务

首先,你需要使用 sc create 命令来批量创建服务。该命令用于注册一个新的服务。

基本语法:

bash
sc create <ServiceName> binPath= <ServiceExecutablePath> start= <StartupType> 
  • ServiceName: 服务的名称。
  • binPath: 可执行文件的路径,通常是服务程序的路径。
  • start: 服务的启动类型,如 auto(自动启动)、demand(手动启动)、disabled(禁用)。

2. PowerShell 脚本来批量安装和管理服务

以下是一个PowerShell脚本示例,能够批量创建服务并管理其启动行为、保护和强制重启功能。

示例 PowerShell 脚本:批量创建服务并设置其属性

powershell
# 定义服务列表和路径
$services = @(
    @{Name="Service1"; Path="C:\Path\To\Service1.exe"; StartType="auto"},
    @{Name="Service2"; Path="C:\Path\To\Service2.exe"; StartType="auto"},
    @{Name="Service3"; Path="C:\Path\To\Service3.exe"; StartType="manual"}
)

# 创建服务并设置启动类型
foreach ($service in $services) {
    $serviceName = $service.Name
    $servicePath = $service.Path
    $serviceStartType = $service.StartType
    
    # 创建服务
    sc.exe create $serviceName binPath= $servicePath start= $serviceStartType
    
    # 设置服务重启策略(强制重启)
    sc.exe failure $serviceName reset= 0 actions= restart/5000
    
    # 设置服务为保护模式(设置高安全权限)
    sc.exe sdset $serviceName D:(A;;FA;;;SY)  # 只允许系统帐户访问
}

# 输出成功消息
Write-Host "所有服务已成功创建并配置。"

3. 服务启动类型和行为配置

  • 自动启动:服务会在系统启动时自动启动。sc create 的 start= auto 配置会设置服务为自动启动。
  • 手动启动:服务只有在手动启动时才会运行。使用 start= demand 来设置服务为手动启动。
  • 禁用服务:如果你不需要某个服务启动,可以将其设置为 disabled
  • 保护服务:通过 sc sdset 设置服务的安全描述符,确保服务只有系统账户或特定用户才能启动。
  • 闪退强制重启:使用 sc failure 配置服务失败时的恢复操作。例如,actions= restart/5000 表示服务失败后 5 秒自动重启。

4. 进一步定制和扩展

你可以根据实际需求进行扩展,例如:

  • 设置服务日志:可以通过 sc qc 命令检查服务配置,了解其日志和其他配置。
  • 批量管理服务:你可以编写脚本来读取外部配置文件(如 JSON、CSV)来批量创建服务。
  • 服务健康检查:通过定时任务或其他监控工具,监控服务的状态并进行日志记录和报告。

5. 执行脚本

确保以管理员权限执行脚本,因为 sc create 需要管理员权限。如果是批量创建多个服务,确保服务的路径和可执行文件已经部署到目标机器上。

示例执行命令:

powershell
Set-ExecutionPolicy RemoteSigned -Scope Process  # 允许执行脚本
.\CreateAndConfigureServices.ps1

6. 优化和自动化部署

如果你需要在多台机器上进行部署,可以将脚本通过远程执行的方式执行,例如使用 PowerShell Remoting(Enter-PSSessionInvoke-Command)在多台计算机上执行脚本。


  • sc create 用于创建服务,sc config 用于配置服务启动行为。
  • sc failure 用于设置服务失败后的自动重启策略。
  • PowerShell 脚本可以帮助你自动化批量服务的创建和管理。
  • 配置服务的安全性和启动类型以保证其稳定性和保护。

通过这样的方式,你能够有效地在多台机器上实现服务的批量创建、自动化部署以及故障恢复策略的配置。


在 Windows 系统中,sc 命令和 reg export 可以帮助我们管理服务的配置、服务的失败行为以及服务的注册表配置等。以下是对你提到的各个命令的详细介绍和使用示例:

1. sc sdset — 设置服务的安全描述符(Service Security Descriptor)

sc sdset 命令用于设置服务的安全描述符。安全描述符决定了谁有权限控制和访问该服务。

基本语法:

bash
sc sdset <ServiceName> <SDDL>
  • <ServiceName>:服务名称。
  • <SDDL>:安全描述符语言(Security Descriptor Definition Language),用于指定访问控制列表(ACL)等权限。

示例: 设置服务 MyService 的安全描述符,使得只有系统账户能够访问:

bash
sc sdset MyService D:(A;;FA;;;SY)

在此例中,D:(A;;FA;;;SY) 设置了只有系统账户 (SY) 具有完全访问权限。

2. sc config — 配置服务的属性

sc config 命令可以用来配置服务的启动类型、二进制文件路径以及其他相关属性。

基本语法:

bash
sc config <ServiceName> start= <StartType> binPath= <PathToExecutable> [其他配置]
  • <ServiceName>:服务的名称。
  • <StartType>:服务的启动类型,通常是 auto(自动启动)、demand(手动启动)、disabled(禁用)等。
  • <PathToExecutable>:服务程序的路径。
  • [其他配置]:可以包括其他配置项,如服务依赖、错误恢复等。

示例:MyService 设置为自动启动,并指定服务的可执行文件路径:

bash
sc config MyService start= auto binPath= "C:\Path\To\MyService.exe"

3. sc failure — 配置服务失败后的恢复策略

sc failure 命令用于配置服务失败后的恢复策略,例如:当服务崩溃时,是否重启该服务、延迟多久重启等。

基本语法:

bash
sc failure <ServiceName> reset= <ResetPeriod> actions= <ActionType>/<DelayTime>
  • <ServiceName>:服务名称。
  • <ResetPeriod>:服务失败的恢复计时器,单位为秒。例如,reset= 0 表示计时器永远不会重置。
  • <ActionType>:失败后的动作。常用的动作包括 restart(重启服务)、run(运行命令)等。
  • <DelayTime>:重启服务的延迟时间,单位为毫秒。

示例: 设置 MyService 在失败后 5 秒自动重启:

bash
sc failure MyService reset= 0 actions= restart/5000

4. sc failureflag 1 — 配置失败标志

sc failureflag 是用来设置服务失败时的特定标志。标志值为 1 表示启用服务失败时的强制重启。

基本语法:

bash
sc failureflag <ServiceName> <FlagValue>
  • <ServiceName>:服务名称。
  • <FlagValue>:设置标志值。1 启用失败强制重启。

示例: 启用 MyService 服务在失败时强制重启:

bash
sc failureflag MyService 1

5. reg export — 导出服务注册表配置

reg export 命令用于导出服务的注册表配置,通常用于备份服务配置。

基本语法:

bash
reg export <ServiceRegistryPath> <ExportFilePath>
  • <ServiceRegistryPath>:服务的注册表路径。
  • <ExportFilePath>:要保存的导出文件路径。

示例: 备份 MyService 的注册表配置:

bash
reg export "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MyService" "C:\Backup\MyService.reg"

6. 完整的 PowerShell 脚本示例

假设你想批量设置多个服务的失败策略、强制重启以及备份服务的注册表配置,可以编写如下 PowerShell 脚本:

powershell
# 定义服务列表
$services = @(
    @{Name="Service1"; Path="C:\Path\To\Service1.exe"; StartType="auto"},
    @{Name="Service2"; Path="C:\Path\To\Service2.exe"; StartType="manual"}
)

foreach ($service in $services) {
    $serviceName = $service.Name
    $servicePath = $service.Path
    $serviceStartType = $service.StartType

    # 创建服务
    sc.exe create $serviceName binPath= $servicePath start= $serviceStartType

    # 设置失败后的重启策略
    sc.exe failure $serviceName reset= 0 actions= restart/5000

    # 启用失败标志强制重启
    sc.exe failureflag $serviceName 1

    # 设置服务安全描述符(只有系统账户可以访问)
    sc.exe sdset $serviceName D:(A;;FA;;;SY)

    # 导出服务的注册表配置进行备份
    reg export "HKLM\SYSTEM\CurrentControlSet\Services\$serviceName" "C:\Backup\$serviceName.reg"
}

# 输出成功消息
Write-Host "所有服务已成功创建、配置并备份。"

  • sc sdset 用于配置服务的安全描述符,限制谁可以访问和控制服务。
  • sc config 用于配置服务的启动类型和其他属性。
  • sc failure 用于设置服务失败后的恢复动作。
  • sc failureflag 启用服务失败时的强制重启。
  • reg export 用于备份服务的注册表配置,便于恢复。

这些命令组合使用可以帮助你进行服务的创建、管理、保护以及备份。你可以将这些命令集成到 PowerShell 脚本中,实现批量服务管理和自动化部署。


SC 命令在 Windows 中可以用于管理服务的不同启动类型、保护模式以及控制服务的启动行为。根据你的需求,以下是实现服务保护、实时自动启动、退出自动启动、以及闪退强制启动的相关操作:

1. 设置服务为自动启动(Automatic)

自动启动意味着服务会在计算机启动时自动启动。

bash
sc config <ServiceName> start= auto
  • 示例:设置 MyService 为自动启动:
    bash
    sc config MyService start= auto

2. 设置服务为手动启动(Manual)

手动启动意味着服务只有在用户或其他进程请求时才会启动。

bash
sc config <ServiceName> start= demand
  • 示例:设置 MyService 为手动启动:
    bash
    sc config MyService start= demand

3. 设置服务为禁用(Disabled)

禁用服务意味着该服务无法启动。

bash
sc config <ServiceName> start= disabled
  • 示例:禁用 MyService 服务:
    bash
    sc config MyService start= disabled

4. 设置服务为实时保护(实时监控)

Windows 服务没有直接的命令来启用“实时保护”功能,通常实时保护是由特定的反病毒或安全软件提供的。不过,你可以通过配置服务的恢复操作来增强服务的容错性。例如设置服务在失败后自动重启。

bash
sc failure <ServiceName> reset= 0 actions= restart/5000
  • 示例:设置 MyService 在失败后 5 秒自动重启:
    bash
    sc failure MyService reset= 0 actions= restart/5000

5. 设置服务为强制启动(强制启动闪退服务)

强制启动服务的操作通常需要管理员权限,且可能会在服务崩溃时自动重启服务。可以通过设置失败时的行为来强制服务重启。

bash
sc config <ServiceName> start= auto
sc failure <ServiceName> actions= restart/5000
  • 示例:强制重启 MyService 服务:
    bash
    sc config MyService start= auto
    sc failure MyService actions= restart/5000

6. 退出自动启动(取消自动启动)

如果你希望服务退出自动启动并恢复为手动启动,可以使用以下命令:

bash
sc config <ServiceName> start= demand
  • 示例:将 MyService 设置为手动启动,取消自动启动:
    bash
    sc config MyService start= demand

7. 设置服务为保护模式(Service Protection)

Windows 提供了设置服务安全标志和服务帐户权限的功能来增强服务的保护。如果你需要为服务设置额外的安全控制,可以通过 sc sdset 命令来修改服务的安全描述符。例如:

bash
sc sdset <ServiceName> D:(A;;FA;;;SY)
  • 示例:为 MyService 设置保护模式(安全描述符):
    bash
    sc sdset MyService D:(A;;FA;;;SY)

以上命令帮助你配置服务的启动行为、保护机制及失败重启等功能。具体配置取决于你服务的需要和操作系统的安全设置。如果你有更具体的服务名称和需求,可以根据这些命令进行调整。

SnowShot_2025-11-20_12-36-36

sc queryexwevtutilfltmclodctrsc qcsc querysc descriptionsc failureflag 命令的详细说明,这些命令通常用于服务管理、事件日志管理、过滤器驱动程序管理等任务。

1. sc queryex

sc queryex 命令用于查询服务的详细信息,除了 sc query 提供的基本信息外,还能显示额外的状态信息,尤其是有关服务的扩展状态。

常见用法:

bash
sc queryex <服务名>

示例:

bash
sc queryex wuauserv

该命令返回 Windows 更新服务 的详细信息,包括服务的状态、PID、启动类型等。

2. wevtutil

wevtutil 是用于管理事件日志和事件日志文件的命令行工具。它可以用来导出、清除、查询和配置日志文件。

常见用法:

  • 查看事件日志:

    bash
    wevtutil qe Application /f:text /c:5

    查询 Application 日志中的最新 5 条事件,输出格式为文本。

  • 导出事件日志:

    bash
    wevtutil epl Application C:\path\to\exportedlog.evtx

    Application 日志导出到指定路径。

  • 清除事件日志:

    bash
    wevtutil cl Application

    清除 Application 日志。

3. fltmc

fltmc 是用于管理和显示文件系统过滤驱动程序(FSD)信息的工具。它可以列出当前加载的过滤器驱动程序,查看它们的状态,或卸载过滤器。

常见用法:

  • 列出所有过滤器:

    bash
    fltmc instances
  • 查看已加载的过滤器驱动:

    bash
    fltmc drivers
  • 卸载过滤器:

    bash
    fltmc detach <过滤器名称>

4. lodctr

lodctr 是一个用于加载或卸载性能计数器的命令行工具。它可以用于将自定义的性能计数器加载到系统中。

常见用法:

  • 加载性能计数器:

    bash
    lodctr /r

    重新加载计数器设置并刷新注册表。

  • 卸载性能计数器:

    bash
    lodctr /u
  • 显示当前的计数器:

    bash
    lodctr /?

5. sc qc

sc qc 命令用于查询服务的配置(包括服务二进制路径、启动类型、依赖项等)。它显示关于指定服务的详细配置。

常见用法:

bash
sc qc <服务名>

示例:

bash
sc qc wuauserv

该命令显示 Windows 更新服务 的配置,包括二进制路径、启动类型、依赖关系等信息。

6. sc query

sc query 命令用于查询服务的状态,它提供服务是否正在运行、停止、挂起等状态。

常见用法:

bash
sc query <服务名>

示例:

bash
sc query wuauserv

该命令显示 Windows 更新服务 的状态(例如正在运行、停止、暂停等)。

7. sc description

sc description 命令用于查看或设置服务的描述字段。服务的描述通常会出现在服务管理器中,帮助管理员理解该服务的作用。

常见用法:

bash
sc description <服务名> <描述>
  • 设置服务的描述:

    bash
    sc description wuauserv "Windows Update Service"
  • 获取服务描述:

    bash
    sc description wuauserv

8. sc failureflag

sc failureflag 命令用于设置服务的失败标志。它定义了当服务失败时,系统应如何响应。

常见用法:

bash
sc failureflag <服务名> <标志值>

标志值可以包括:

  • 0:关闭失败响应
  • 1:启用失败响应

示例:

bash
sc failureflag wuauserv 1

该命令启用 Windows 更新服务 的失败响应。


汇总表

命令/工具 功能描述 示例
sc queryex 查询服务的详细信息,包括扩展状态 sc queryex wuauserv
wevtutil 管理和查询事件日志 wevtutil qe Application /f:text /c:5
fltmc 管理和查看文件系统过滤器驱动程序 fltmc instances
lodctr 加载和卸载性能计数器 lodctr /r
sc qc 查询服务的配置,包括二进制路径、启动类型等 sc qc wuauserv
sc query 查询服务的当前状态 sc query wuauserv
sc description 查看或设置服务的描述字段 sc description wuauserv "Windows Update Service"
sc failureflag 设置服务的失败标志,定义服务失败时的响应行为 sc failureflag wuauserv 1

这些命令提供了对 Windows 服务、事件日志、过滤器驱动程序等方面的深入管理和控制,可以帮助管理员更高效地进行系统维护、监控和故障排除。


SC命令、NET命令、PowerShell cmdlet 和 installutil.exe 的汇总说明

这些命令和工具都与 Windows 服务的安装、启动、停止和管理相关,下面是它们的概述和常见用法:


1. SC命令 (Service Control)

SC 是一个用于与 Windows 服务进行交互的命令行工具。它可以用于创建、启动、停止、查询和配置服务。

  • 常见命令:
    • sc start <服务名称>:启动指定的服务。
    • sc stop <服务名称>:停止指定的服务。
    • sc query <服务名称>:查询服务的当前状态。
    • sc create <服务名称> binPath= <服务路径>:创建一个新服务。
    • sc delete <服务名称>:删除指定的服务。
    • sc config <服务名称> start= <启动类型>:修改服务的启动类型(如 autodemand 等)。

例子:

bash
sc start MyService
sc stop MyService
sc create MyService binPath= "C:\path\to\myservice.exe"

2. NET命令

NET 命令是 Windows 中一个多功能的命令,常用于网络操作和服务管理。

  • 常见命令:
    • net start <服务名称>:启动指定的服务。
    • net stop <服务名称>:停止指定的服务。
    • net pause <服务名称>:暂停指定的服务。
    • net continue <服务名称>:恢复暂停的服务。
    • net help:获取帮助信息。

例子:

bash
net start MyService
net stop MyService

3. PowerShell cmdlet

PowerShell 提供了多种 cmdlet 来管理 Windows 服务。以下是与服务相关的一些常用 cmdlet:

  • Get-Service:获取所有服务的状态,或者获取指定服务的状态。
  • Start-Service:启动指定的服务。
  • Stop-Service:停止指定的服务。
  • Restart-Service:重启指定的服务。
  • Set-Service:配置服务的启动类型或其他属性。

例子:

powershell
Get-Service -Name "MyService"
Start-Service -Name "MyService"
Stop-Service -Name "MyService"
Restart-Service -Name "MyService"
Set-Service -Name "MyService" -StartupType Automatic

4. installutil.exe

installutil.exe 是一个用于安装和卸载 .NET Framework 服务的工具。它可以用于部署 Windows 服务应用程序。

  • 常见用法:
    • 安装服务:installutil <服务路径>
    • 卸载服务:installutil /u <服务路径>

例子:

bash
installutil C:\path\to\MyService.exe
installutil /u C:\path\to\MyService.exe
命令/工具 功能描述 示例
SC命令 用于创建、启动、停止、删除服务 sc start MyService  sc create MyService binPath="C:\path\to\myservice.exe"
NET命令 用于管理服务,类似于 SC 命令 net start MyService  net stop MyService
PowerShell cmdlet 用于 PowerShell 中的服务管理 Start-Service -Name "MyService"  Restart-Service -Name "MyService"
installutil.exe 用于安装和卸载 .NET 服务 installutil C:\path\to\MyService.exe  installutil /u C:\path\to\MyService.exe

这些工具和命令适用于不同的场景,可以根据需求选择使用。


tasklisttaskkillwmic servicenetsh winsock reset 和 psservice 命令汇总说明

这些命令和工具主要用于管理和诊断 Windows 系统中的进程和服务,下面是它们的详细说明和常见用法:


1. tasklist 命令

tasklist 命令用于显示当前正在运行的所有进程的列表,包括每个进程的 ID 和内存使用情况等。

  • 常见用法:
    • tasklist:列出所有正在运行的进程。
    • tasklist /fi "imagename eq <进程名>":筛选指定进程的列表。
    • tasklist /v:显示详细信息,包括进程使用的内存、CPU 时间等。
    • tasklist /fo csv:以 CSV 格式输出。

例子:

bash
tasklist
tasklist /fi "imagename eq notepad.exe"
tasklist /v
tasklist /fo csv

2. taskkill 命令

taskkill 命令用于终止一个或多个正在运行的进程。

  • 常见用法:
    • taskkill /im <进程名>:通过进程名称终止指定进程。
    • taskkill /pid <进程ID>:通过进程 ID 终止指定进程。
    • taskkill /f /im <进程名>:强制终止指定进程。
    • taskkill /t /im <进程名>:终止指定进程及其子进程。

例子:

bash
taskkill /im notepad.exe
taskkill /pid 1234
taskkill /f /im notepad.exe
taskkill /t /im notepad.exe

3. wmic service 命令

wmic(Windows Management Instrumentation Command-line)命令提供了对 Windows 系统的管理接口,可以用于查询、启动、停止、配置和删除服务等。

  • 常见用法:
    • wmic service list brief:列出所有服务的简要信息。
    • wmic service where "name='<服务名>'" call start:启动指定服务。
    • wmic service where "name='<服务名>'" call stop:停止指定服务。
    • wmic service where "name='<服务名>'" call delete:删除指定服务。

例子:

bash
wmic service list brief
wmic service where "name='wuauserv'" call start
wmic service where "name='wuauserv'" call stop

4. netsh winsock reset 命令

netsh winsock reset 命令用于重置 Windows Socket(Winsock)目录,解决与网络连接相关的问题,通常在遇到无法连接互联网时使用。

  • 常见用法:
    • netsh winsock reset:重置 Winsock 目录。

例子:

bash
netsh winsock reset

使用场景:

  • 网络连接出现问题时,尤其是浏览器无法加载页面或其他网络应用无法正常工作时。

5. psservice 工具

psservice 是 Sysinternals Suite 中的一个工具,用于查看和管理 Windows 服务。它可以提供更详细的服务信息,类似于 sc 命令和 PowerShell cmdlet,但提供更强大的诊断功能。

  • 常见用法:
    • psservice:列出所有服务。
    • psservice <服务名>:查看指定服务的详细信息。
    • psservice stop <服务名>:停止指定服务。
    • psservice start <服务名>:启动指定服务。

例子:

bash
psservice
psservice "wuauserv"
psservice stop "wuauserv"
psservice start "wuauserv"
命令/工具 功能描述 示例
tasklist 显示当前运行的进程列表,包括进程ID、内存使用情况等。 tasklist  tasklist /fi "imagename eq notepad.exe"
taskkill 用于终止一个或多个进程。 taskkill /im notepad.exe  taskkill /f /im notepad.exe
wmic service 用于查询、启动、停止和删除 Windows 服务。 wmic service where "name='wuauserv'" call start
netsh winsock reset 重置 Winsock 目录,修复网络连接问题。 netsh winsock reset
psservice 用于查看和管理 Windows 服务。 psservice stop "wuauserv"  psservice start "wuauserv"

这些工具和命令适用于进程管理、服务管理、网络诊断等场景,帮助系统管理员和用户解决系统问题或进行日常维护。


wmic 与 PowerShell cmdlet Get-CimInstance 在服务管理中的应用

wmicGet-CimInstance 都可以用于获取和管理 Windows 服务,但它们的使用方式和功能有所不同。下面是它们的概述和应用场景。


1. wmic 命令

wmic 是一个基于命令行的 Windows 管理工具,它通过 Windows Management Instrumentation (WMI) 提供对系统硬件、服务、进程等的访问和控制。通过 wmic,可以非常方便地查询和管理 Windows 服务。

  • 常见用法:
    • 查询服务: wmic service list brief 列出所有服务的简要信息。
    • 查询特定服务: wmic service where "name='<服务名>'" get Name, State, StartMode 获取特定服务的状态、名称和启动模式。
    • 启动服务: wmic service where "name='<服务名>'" call start 启动服务。
    • 停止服务: wmic service where "name='<服务名>'" call stop 停止服务。
    • 删除服务: wmic service where "name='<服务名>'" call delete 删除服务。

例子:

bash
wmic service list brief
wmic service where "name='wuauserv'" get Name, State, StartMode
wmic service where "name='wuauserv'" call start
wmic service where "name='wuauserv'" call stop

优点:

  • 适合通过命令行进行批量操作和管理。
  • 可以查询服务的详细信息,如启动模式、状态等。

2. PowerShell cmdlet Get-CimInstance

Get-CimInstance 是 PowerShell 提供的一个命令,它用于获取 CIM (Common Information Model) 实例,可以用来获取系统的硬件信息、操作系统信息、服务信息等。它是通过 Windows Management Instrumentation (WMI) 或更现代的 CIM 提供对系统信息的访问。

  • 常见用法:
    • 查询所有服务: Get-CimInstance -ClassName Win32_Service 获取所有服务的详细信息。
    • 查询特定服务: Get-CimInstance -ClassName Win32_Service -Filter "Name='wuauserv'" 查询指定服务的详细信息。
    • 查询服务的状态: Get-CimInstance -ClassName Win32_Service | Where-Object {$_.State -eq 'Running'} 查询所有正在运行的服务。
    • 启动服务: Start-Service -Name 'wuauserv' 启动指定服务(使用 PowerShell cmdlet)。
    • 停止服务: Stop-Service -Name 'wuauserv' 停止指定服务。

例子:

powershell
Get-CimInstance -ClassName Win32_Service
Get-CimInstance -ClassName Win32_Service -Filter "Name='wuauserv'"
Get-CimInstance -ClassName Win32_Service | Where-Object {$_.State -eq 'Running'}

优点:

  • 更加现代化,使用 CIM 提供的信息,性能较 wmic 更高。
  • 支持更加细致的查询和操作,可以结合 PowerShell 的其他 cmdlet 进行复杂的管道操作和脚本自动化。
  • 支持远程管理,能够通过 PowerShell 的远程功能访问和管理远程计算机上的服务。

wmic 与 Get-CimInstance 比较

特性 wmic Get-CimInstance
协议 使用 WMI(Windows Management Instrumentation) 使用 CIM(Common Information Model),是 WMI 的改进版本
命令行支持 传统的命令行工具 PowerShell 的 cmdlet
性能 性能相对较低,适用于简单操作 性能更高,适用于复杂查询和自动化任务
使用场景 用于快速查询和简单的系统管理任务 用于更现代化的管理,尤其是结合 PowerShell 脚本的自动化
远程管理支持 支持 WMI 远程查询,但配置较为复杂 支持远程管理,易于通过 PowerShell 脚本进行远程操作


  • wmic:是传统的 Windows 命令行工具,适合快速执行基本的服务管理任务,尤其适用于不需要复杂操作的场景。
  • Get-CimInstance:是 PowerShell 提供的更现代的工具,适用于更复杂的查询和服务管理任务,支持 PowerShell 的管道操作,适合自动化和远程管理。

推荐: 如果你正在使用 PowerShell 并且需要更高效、更灵活的服务管理,Get-CimInstance 是更优的选择。而如果你在命令行中进行快速、简单的操作,wmic 仍然是一个方便的工具。


wevtutilreg exportreg adddismlogman 命令服务管理汇总说明

这些命令工具主要用于 Windows 系统中的日志管理、注册表编辑、服务管理等。下面是它们的详细说明和常见用法。


1. wevtutil 命令

wevtutil 是 Windows 中用于管理事件日志的命令行工具。它可以用来查询、导出、清除、备份和恢复事件日志。wevtutil 主要用于日志管理,特别是系统日志和应用日志。

  • 常见用法:
    • 查看事件日志: wevtutil qe <日志名称> 查询事件日志。
    • 导出事件日志: wevtutil epl <日志名称> <导出文件路径> 将事件日志导出到文件。
    • 清除事件日志: wevtutil cl <日志名称> 清除指定的事件日志。
    • 列出所有日志: wevtutil el 显示所有事件日志名称。

例子:

bash
wevtutil qe Application
wevtutil epl System C:\logs\system.evtx
wevtutil cl Application
wevtutil el

应用场景:

  • 用于监控和分析系统的事件日志。
  • 备份和清理日志文件。

2. reg export / reg add 命令

reg exportreg add 是用于 Windows 注册表管理的命令。reg export 用于导出注册表项,reg add 用于向注册表添加新的键值或修改现有键值。

  • reg export 常见用法:
    • 导出注册表项: reg export <注册表路径> <文件路径> 将注册表项导出到文件。

例子:

bash
reg export HKEY_LOCAL_MACHINE\Software\MySoftware C:\backup\mysoftware.reg
  • reg add 常见用法:
    • 添加新的注册表键值: reg add <注册表路径> /v <值名称> /t <值类型> /d <数据>
    • 修改现有的注册表键值: reg add <注册表路径> /v <值名称> /t <值类型> /d <数据>

例子:

bash
reg add HKEY_LOCAL_MACHINE\Software\MySoftware /v MyKey /t REG_SZ /d "MyValue"

应用场景:

  • reg export:用于备份和迁移注册表配置。
  • reg add:用于修改系统设置或安装时修改注册表。

3. dism 命令

dism(Deployment Imaging Service and Management Tool)是一个强大的工具,用于管理和维护 Windows 映像(包括安装和服务功能、驱动程序等)。dism 还可以用于修复 Windows 系统文件和服务。

  • 常见用法:
    • 查看服务状态: dism /online /get-services 列出所有服务的状态。
    • 启用或禁用功能: dism /online /enable-feature /featurename:<功能名> /all 启用某个功能。
    • 修复系统映像: dism /online /cleanup-image /restorehealth 修复 Windows 系统映像。
    • 查看系统组件状态: dism /online /get-feature-info /featurename:<功能名>

例子:

bash
dism /online /get-services
dism /online /cleanup-image /restorehealth
dism /online /enable-feature /featurename:NetFx3 /all

应用场景:

  • 用于修复系统映像和安装映像。
  • 用于管理 Windows 功能和服务的状态。

4. logman 命令

logman 是一个 Windows 命令行工具,用于管理性能计数器、事件跟踪和数据收集。它常用于性能监控和数据收集,特别是在调试和优化过程中。

  • 常见用法:
    • 创建性能数据收集器: logman create counter <收集器名称> -c <计数器路径>
    • 启动数据收集: logman start <收集器名称>
    • 停止数据收集: logman stop <收集器名称>
    • 查看收集器列表: logman query 列出所有的收集器。

例子:

bash
logman create counter MyCounter -c "\Processor(_Total)\% Processor Time"
logman start MyCounter
logman stop MyCounter
logman query

应用场景:

  • 用于性能监控和日志收集。
  • 用于创建和管理性能计数器和事件跟踪会话。

总结

命令/工具 功能描述 示例
wevtutil 管理 Windows 事件日志,查询、导出、清理日志等。 wevtutil qe Application  wevtutil epl System C:\logs\system.evtx
reg export 导出注册表项到文件。 reg export HKEY_LOCAL_MACHINE\Software\MySoftware C:\backup\mysoftware.reg
reg add 向注册表添加或修改键值。 reg add HKEY_LOCAL_MACHINE\Software\MySoftware /v MyKey /t REG_SZ /d "MyValue"
dism 管理和修复 Windows 映像、功能和服务。 dism /online /cleanup-image /restorehealth  dism /online /get-services
logman 管理性能数据收集器和事件跟踪,进行性能监控。 logman create counter MyCounter -c "\Processor(_Total)\% Processor Time"

这些工具适用于 Windows 系统管理员、技术支持人员以及开发人员,用于系统管理、日志监控、性能调优等任务。


auditpolnetshschtasksbcdeditfsutil 这五个 Windows 服务管理命令的汇总与常见用法说明:

1. auditpol 命令

auditpol 命令用于管理 Windows 审计策略。它允许你查看和设置审核策略,用于增强系统的安全性和监控活动。

  • 常见用法:
    • 查看当前审核策略: auditpol /get /category:* 查看所有类别的审核策略。
    • 设置审核策略: auditpol /set /category:<类别> /success:enable /failure:disable 设置特定类别的成功和失败审核。
    • 启用或禁用策略: auditpol /set /subcategory:<子类别> /success:enable /failure:enable 启用或禁用审核。

例子:

bash
auditpol /get /category:Logon/Logoff
auditpol /set /category:Logon/Logoff /success:enable /failure:enable
auditpol /set /subcategory:Logon/Logoff /success:enable /failure:disable

应用场景:

  • 用于监控系统的登录、注销、文件访问等活动。
  • 配置审计策略以符合安全需求。

2. netsh advfirewall 命令

netsh advfirewall 用于管理 Windows 防火墙。你可以通过它来配置防火墙规则、端口转发等。

  • 常见用法:
    • 查看防火墙状态: netsh advfirewall show allprofiles 显示所有防火墙配置。
    • 启用或禁用防火墙: netsh advfirewall set allprofiles state on 启用防火墙,netsh advfirewall set allprofiles state off 禁用防火墙。
    • 添加防火墙规则(打开端口): netsh advfirewall firewall add rule name="Open Port 8080" protocol=TCP dir=in localport=8080 action=allow

例子:

bash
netsh advfirewall show allprofiles
netsh advfirewall set allprofiles state on
netsh advfirewall firewall add rule name="Open Port 8080" protocol=TCP dir=in localport=8080 action=allow

应用场景:

  • 用于管理防火墙配置,打开或关闭端口。
  • 为应用程序添加或删除防火墙规则。

3. schtasks 命令

schtasks 用于在 Windows 中安排、查看、删除和配置计划任务。它允许你管理系统上的自动化任务。

  • 常见用法:
    • 创建计划任务: schtasks /create /tn <任务名称> /tr <命令> /sc <调度类型> /st <开始时间>
    • 列出所有任务: schtasks /query
    • 删除计划任务: schtasks /delete /tn <任务名称>

例子:

bash
schtasks /create /tn "MyBackupTask" /tr "C:\Backup\backup.bat" /sc daily /st 02:00
schtasks /query
schtasks /delete /tn "MyBackupTask"

应用场景:

  • 用于定期备份、清理日志、定时运行程序等任务的自动化管理。

4. bcdedit 命令

bcdedit 是一个用于管理 Windows 启动配置数据(BCD)的命令行工具。它通常用于配置启动加载器、设置操作系统的启动选项。

  • 常见用法:
    • 查看启动配置: bcdedit /enum 查看当前的启动配置。
    • 设置默认启动操作系统: bcdedit /default <ID> 设置默认启动的操作系统。
    • 设置启动延迟时间: bcdedit /timeout <秒数> 设置操作系统启动时的延迟。

例子:

bash
bcdedit /enum
bcdedit /default {current}
bcdedit /timeout 30

应用场景:

  • 用于修改系统的启动配置,如设置启动顺序、延迟等。
  • 在双系统或多重启动环境下配置默认启动项。

5. fsutil 命令

fsutil 是 Windows 中一个高级的文件系统管理命令,用于检查或修改文件系统和卷的属性。

  • 常见用法:
    • 查询卷信息: fsutil volume diskfree <驱动器号> 查看磁盘的可用空间。
    • 创建符号链接: fsutil reparsepoint set <符号链接路径> <目标路径>
    • 查询和设置 NTFS 文件系统属性: fsutil behavior query disable8dot3names

例子:

bash
fsutil volume diskfree C:
fsutil reparsepoint set C:\Link D:\Target
fsutil behavior query disable8dot3names

应用场景:

  • 用于管理磁盘、卷和文件系统。
  • 设置符号链接、查询磁盘空间、修改文件系统属性等。

汇总表

命令/工具 功能描述 示例
auditpol 管理 Windows 审计策略,配置系统的日志审核。 auditpol /get /category:Logon/Logoff  auditpol /set /subcategory:Logon/Logoff /success:enable /failure:enable
netsh advfirewall 配置和管理 Windows 防火墙,包括端口开放与规则设置。 netsh advfirewall show allprofiles  netsh advfirewall firewall add rule name="Open Port 8080" protocol=TCP dir=in localport=8080 action=allow
schtasks 创建、查看、删除和配置计划任务。 schtasks /create /tn "MyBackupTask" /tr "C:\Backup\backup.bat" /sc daily /st 02:00
bcdedit 管理 Windows 启动配置数据(BCD)。 bcdedit /enum  bcdedit /default {current}
fsutil 管理文件系统和卷的属性,创建符号链接等操作。 fsutil volume diskfree C:  fsutil reparsepoint set C:\Link D:\Target

这些命令主要用于系统管理、网络配置、计划任务、启动项管理和文件系统操作等任务,适合 Windows 系统管理员和技术支持人员使用。


vmconnectdockerperfmonlodctrwinsat 这些与 Windows 服务管理相关的工具汇总与常见用法说明:

1. vmconnect 命令

vmconnect 是用于连接和管理 Hyper-V 虚拟机的命令行工具。它允许用户通过远程桌面协议 (RDP) 连接到虚拟机并进行操作。

  • 常见用法:
    • 连接到 Hyper-V 虚拟机: vmconnect <主机名> <虚拟机名称>
    • 这通常在 Hyper-V 管理器中自动执行,但你也可以通过命令行直接启动连接。

例子:

bash
vmconnect localhost "MyVirtualMachine"

应用场景:

  • 连接到 Hyper-V 虚拟机,执行远程管理和故障排除。

2. docker 服务

docker 是一个用于创建、部署和管理容器化应用的开源平台。Docker 在 Windows 上通过 Docker Desktop 或 Windows Server 的 Docker 引擎运行。

  • 常见用法:
    • 启动 Docker 服务: docker start <容器ID>
    • 停止 Docker 服务: docker stop <容器ID>
    • 查看 Docker 容器状态: docker ps
    • 查看 Docker 服务: docker info

例子:

bash
docker start mycontainer
docker stop mycontainer
docker ps
docker info

应用场景:

  • 管理和监控 Docker 容器,创建、启动和停止容器化应用。

3. perfmon 命令

perfmon 是 Windows 性能监视器的命令行工具,用于跟踪和记录系统的性能数据,包括 CPU、内存、磁盘和网络等。

  • 常见用法:
    • 启动性能监视器: perfmon
    • 打开性能监视器的控制台: perfmon /report
    • 查看实时性能数据: perfmon /rel

例子:

bash
perfmon
perfmon /report
perfmon /rel

应用场景:

  • 监控系统的性能,查看实时和历史的资源使用情况。
  • 诊断性能瓶颈,进行性能优化。

4. lodctr 命令

lodctr 是一个用于加载和卸载性能计数器的工具。它可以修复 Windows 性能监视器中的计数器问题,尤其是在系统升级或恢复之后。

  • 常见用法:
    • 重新加载性能计数器: lodctr /r
    • 显示帮助信息: lodctr /?

例子:

bash
lodctr /r
lodctr /?

应用场景:

  • 解决性能计数器加载问题。
  • 在系统恢复或更改后确保性能计数器正常工作。

5. winsat 命令

winsat(Windows 系统评估工具)是一个用于评估计算机硬件性能的工具,主要是为了 Windows 性能评分(Windows Experience Index)。

  • 常见用法:
    • 运行系统性能评估: winsat formal
    • 仅查看硬盘性能评分: winsat disk
    • 查看系统分数: winsat benchmark

例子:

bash
winsat formal
winsat disk
winsat benchmark

应用场景:

  • 运行系统性能测试和硬件评估。
  • 获取计算机的硬件评分,特别是在首次安装或升级后。

汇总表

命令/工具 功能描述 示例
vmconnect 连接到 Hyper-V 虚拟机,进行远程管理。 vmconnect localhost "MyVirtualMachine"
docker 管理 Docker 容器,创建、启动、停止容器等。 docker start mycontainer  docker ps  docker info
perfmon 监控系统性能,包括 CPU、内存、磁盘、网络等。 perfmon  perfmon /report  perfmon /rel
lodctr 加载和卸载性能计数器,修复计数器问题。 lodctr /r  lodctr /?
winsat 进行系统硬件性能评估,获取 Windows 性能分数。 winsat formal  winsat disk  winsat benchmark

这些工具帮助用户管理和优化 Windows 系统的性能,管理虚拟机、容器,监控系统状态,评估硬件性能等。


handlesigcheckprocdumpdiskpartnltest 等 Windows 服务管理相关命令工具的汇总与使用说明:

1. handle 命令

handle 是 Microsoft Sysinternals 提供的一个工具,用于查看和管理正在使用的文件句柄和进程。它可以帮助你查找哪些进程正在访问某个文件或目录。

  • 常见用法:
    • 列出所有句柄: handle
    • 查找某个特定文件的句柄: handle <文件路径>
    • 关闭特定进程的句柄: handle -c <句柄> -p <进程ID>

例子:

bash
handle
handle C:\Users\JohnDoe\Documents
handle -c 0x12345678 -p 1234

应用场景:

  • 查看哪些进程正在使用某个文件或资源。
  • 强制关闭不再需要的句柄,以避免文件或资源被锁定。

2. sigcheck 命令

sigcheck 是 Sysinternals 提供的一个工具,用于检查文件的签名和版本信息,确认文件是否由受信任的发布者发布。它非常适用于安全分析和审计。

  • 常见用法:
    • 检查文件签名: sigcheck <文件路径>
    • 递归检查目录中的所有文件: sigcheck -r <目录>
    • 显示文件的版本信息: sigcheck -v <文件路径>

例子:

bash
sigcheck C:\Windows\System32\notepad.exe
sigcheck -r C:\Program Files
sigcheck -v C:\Windows\System32\kernel32.dll

应用场景:

  • 安全审计,检查文件是否有有效的签名。
  • 确保没有恶意或篡改的文件在系统中运行。

3. procdump 命令

procdump 是 Sysinternals 提供的一个工具,用于创建进程的内存转储文件(dump file),这是调试和分析应用程序崩溃时非常有用的工具。

  • 常见用法:
    • 创建进程转储: procdump <进程ID> <输出文件>
    • 根据某些条件生成转储文件: procdump -ma <进程ID> <输出文件>
    • 设置触发条件: procdump -e 1 -f <错误类型> <进程ID> <输出文件>

例子:

bash
procdump 1234 C:\dumps\mydump.dmp
procdump -ma 1234 C:\dumps\full_dump.dmp
procdump -e 1 -f "UnhandledException" 1234 C:\dumps\exception.dmp

应用场景:

  • 诊断应用程序崩溃或性能问题。
  • 捕获进程的内存状态,用于后续分析。

4. diskpart 命令

diskpart 是 Windows 自带的一个磁盘管理工具,用于磁盘、分区和卷的管理。它允许你对磁盘进行格式化、分区和调整大小等操作。

  • 常见用法:
    • 启动 Diskpart 工具: diskpart
    • 列出所有磁盘: list disk
    • 选择特定磁盘: select disk <磁盘号>
    • 创建新分区: create partition primary size=<大小>
    • 格式化分区: format fs=ntfs quick

例子:

bash
diskpart
list disk
select disk 1
create partition primary size=10000
format fs=ntfs quick

应用场景:

  • 管理磁盘和分区,例如创建、删除、格式化磁盘。
  • 进行磁盘管理和恢复操作。

5. nltest 命令

nltest 是一个用于网络和域控制器管理的命令行工具,它可以用于测试域信任、验证域控制器的状态以及其他域相关的操作。

  • 常见用法:
    • 测试域信任: nltest /domain_trusts
    • 查询域控制器: nltest /dsgetdc:<域名>
    • 验证域控制器的状态: nltest /server:<服务器名> /sc_verify:<域名>
    • 显示域和信任的状态: nltest /dclist:<域名>

例子:

bash
nltest /domain_trusts
nltest /dsgetdc:mydomain.com
nltest /server:server1 /sc_verify:mydomain.com
nltest /dclist:mydomain.com

应用场景:

  • 测试域控制器和域之间的信任关系。
  • 验证域控制器的正常运行和网络连接。

汇总表

命令/工具 功能描述 示例
handle 查看和管理进程句柄,查找正在使用文件的进程。 handle C:\path\to\file  handle -c 0x12345678 -p 1234
sigcheck 检查文件签名和版本信息,确认文件来源。 sigcheck C:\Windows\System32\notepad.exe  sigcheck -r C:\
procdump 创建进程内存转储文件,调试和分析崩溃进程。 procdump 1234 C:\dumps\mydump.dmp  procdump -ma 1234 C:\dump
diskpart 磁盘、分区和卷管理工具,用于磁盘操作。 list disk  select disk 1  format fs=ntfs quick
nltest 测试和管理网络和域控制器,查看域信任关系。 nltest /dsgetdc:mydomain.com  nltest /domain_trusts

这些工具对管理员和高级用户在管理 Windows 系统、诊断问题和进行安全审计时非常有帮助。它们提供了强大的功能来进行系统优化、故障排除和安全检查。


SCPsExecAccessChkbcdedit 命令与服务管理相关的说明:

1. SC 命令(Service Control)

SC 命令是 Windows 提供的一个服务控制工具,它允许你启动、停止、配置和查询系统服务。可以用来管理系统中的所有服务。

常见用法:

  • 查询服务状态:

    bash
    sc qc <服务名>

    这个命令会查询指定服务的配置信息,例如服务的二进制路径、启动类型等。

  • 启动服务:

    bash
    sc start <服务名>

    启动指定的服务。

  • 停止服务:

    bash
    sc stop <服务名>

    停止指定的服务。

  • 配置服务:

    bash
    sc config <服务名> start= <启动类型>

    配置服务的启动类型,启动类型有:

    • auto(自动)
    • demand(按需)
    • disabled(禁用)

    注意start= 后面必须有一个空格。

  • 删除服务:

    bash
    sc delete <服务名>

    删除指定的服务。

例子:

bash
sc start wuauserv   # 启动 Windows 更新服务
sc stop wuauserv    # 停止 Windows 更新服务
sc config wuauserv start= disabled  # 将 Windows 更新服务设置为禁用
sc delete wuauserv  # 删除 Windows 更新服务

2. PsExec 命令

PsExec 是 Sysinternals 提供的一个远程执行工具,允许在远程计算机上执行程序、命令或服务。它可以用来在远程机器上启动服务或执行命令。

常见用法:

  • 在远程计算机上执行命令:

    bash
    psexec \\<远程计算机名> <命令>

    这个命令在远程计算机上执行指定的命令。例如,你可以通过它在远程机器上启动服务、执行程序。

  • 在远程计算机上以管理员权限执行命令:

    bash
    psexec \\<远程计算机名> -u <用户名> -p <密码> <命令>
  • 启动远程服务:

    bash
    psexec \\<远程计算机名> sc start <服务名>

例子:

bash
psexec \\remotePC sc start wuauserv    # 在远程计算机上启动 Windows 更新服务
psexec \\remotePC -u admin -p password sc stop wuauserv   # 在远程计算机上以管理员身份停止服务

3. AccessChk 命令

AccessChk 是 Sysinternals 提供的一个工具,用于检查文件、注册表项、进程和服务的权限。它可以帮助你审计谁对某个对象有访问权限。

常见用法:

  • 查看服务权限:

    bash
    accesschk -s <服务名>

    这个命令会显示指定服务的权限信息,告诉你哪些用户或组有访问该服务的权限。

  • 查看文件夹、文件或注册表项的权限:

    bash
    accesschk -d <文件夹路径>
    accesschk -k <注册表项路径>

例子:

bash
accesschk -s wuauserv     # 查看 Windows 更新服务的权限
accesschk -d C:\Windows   # 查看 Windows 文件夹的权限
accesschk -k HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion # 查看注册表项权限

4. bcdedit 命令

bcdedit 是用于管理 Windows 启动配置数据(BCD)的工具。它允许你查看和修改启动加载程序的设置。

常见用法:

  • 查看当前的启动配置:

    bash
    bcdedit

    这个命令将显示当前的启动配置数据,包括启动项、操作系统设置等。

  • 修改启动项:

    bash
    bcdedit /set <启动项标识符> <设置项> <值>

    例如,修改启动模式:

    bash
    bcdedit /set {default} bootmenupolicy legacy   # 设置启动菜单为经典模式
  • 创建新启动项:

    bash
    bcdedit /copy {default} /d "Windows 10 Safe Mode"

    这个命令会复制现有的启动项并为其创建一个新条目。

  • 删除启动项:

    bash
    bcdedit /delete <启动项标识符>

例子:

bash
bcdedit   # 查看启动配置数据
bcdedit /set {default} bootmenupolicy legacy  # 设置启动菜单为传统模式
bcdedit /copy {default} /d "Windows 10 Safe Mode"  # 创建 Windows 10 安全模式启动项
bcdedit /delete {<启动项标识符>}  # 删除指定的启动项

汇总表

工具/命令 功能描述 示例
SC 管理和控制 Windows 服务,启动、停止、配置、查询服务 sc start <服务名>  sc stop <服务名>
PsExec 远程执行命令或启动程序,管理远程服务 psexec \\remotePC sc start <服务名>  psexec \\remotePC cmd
AccessChk 查看文件、注册表、服务、进程的权限信息 accesschk -s <服务名>  accesschk -d C:\folder
bcdedit 管理 Windows 启动配置,查看和修改启动设置 bcdedit /set {default} bootmenupolicy legacy  bcdedit

这些命令工具为管理员和开发人员提供了强大的功能,用于远程服务管理、权限审计、系统启动配置修改等操作,帮助更好地维护和管理 Windows 系统。


sc failuresc configsc sdsetsc sdshowgpupdategpresultwinrslogparserdiskshadow 命令的详细说明,这些命令通常用于服务管理、组策略更新、远程命令执行等任务。

1. sc failure

sc failure 命令用于配置服务的失败响应策略。如果服务在启动时失败,管理员可以配置服务的行为,如重启服务或记录事件。

常见用法:

bash
sc failure <服务名> reset=<时间> actions=<失败次数>,<重启间隔>,<重启次数>
  • reset=<时间>:重置失败计数的时间间隔。
  • actions=<失败次数>,<重启间隔>,<重启次数>:指定服务失败时的重试行为。

示例:

bash
sc failure wuauserv reset= 60 actions= restart/5000/3

该命令设置 Windows 更新服务 在失败时重试 3 次,每次重试间隔 5 秒,失败计数会在 60 分钟后重置。

2. sc config

sc config 命令用于配置服务的启动类型、二进制路径、描述等信息。此命令对于服务的管理非常有用。

常见用法:

bash
sc config <服务名> start= <启动类型>
  • 启动类型可以是:
    • auto:自动启动
    • demand:按需启动
    • disabled:禁用服务

示例:

bash
sc config wuauserv start= auto  # 将 Windows 更新服务设置为自动启动
sc config wuauserv binPath= "C:\Path\To\new\binary.exe"  # 设置服务的二进制文件路径

3. sc sdset

sc sdset 命令用于设置服务的安全描述符,控制服务的权限和访问控制。

常见用法:

bash
sc sdset <服务名> <安全描述符>
  • 安全描述符是一个访问控制列表 (ACL),定义了谁可以访问该服务以及他们的权限。

示例:

bash
sc sdset wuauserv D:(A;;CCLCSWRPWPDTLOCRSDRCWDWO;;;WD)

这个命令设置 Windows 更新服务的安全描述符,允许特定的用户或组执行某些操作。

4. sc sdshow

sc sdshow 命令用于显示服务的安全描述符,查看服务的权限配置。

常见用法:

bash
sc sdshow <服务名>

示例:

bash
sc sdshow wuauserv

显示 Windows 更新服务 的安全描述符。

5. gpupdate

gpupdate 命令用于强制更新计算机和用户的组策略设置。它可以使策略立即生效,而不必等到下一次系统启动或用户登录。

常见用法:

bash
gpupdate

这个命令会刷新计算机和用户的所有组策略设置。

  • 强制刷新:

    bash
    gpupdate /force
  • 仅刷新计算机策略:

    bash
    gpupdate /target:computer
  • 仅刷新用户策略:

    bash
    gpupdate /target:user

6. gpresult

gpresult 命令用于生成并查看组策略的结果集,可以查看计算机或用户所应用的组策略。

常见用法:

bash
gpresult /R

这个命令会显示当前计算机和用户的组策略应用情况。

  • 查看计算机的组策略:

    bash
    gpresult /S <计算机名> /USER <用户名> /H report.html
  • 查看详细报告:

    bash
    gpresult /V

7. winrs

winrs 命令用于在远程计算机上执行命令,它类似于 PsExec,但它是 Windows 自带的远程管理工具,通常用于 PowerShell 远程操作。

常见用法:

bash
winrs -r:<远程计算机名> <命令>

例如,远程启动一个服务:

bash
winrs -r:remotePC sc start wuauserv

8. logparser

logparser 是一个命令行工具,允许你查询各种日志文件(如事件日志、IIS 日志、文件系统等)并生成分析报告。

常见用法:

bash
logparser "SELECT * FROM <日志文件路径>" -i:evt -o:txt
  • 查看事件日志:

    bash
    logparser "SELECT * FROM C:\Windows\System32\winevt\Logs\Application.evtx" -i:evt -o:txt > output.txt
  • 查询 IIS 日志:

    bash
    logparser "SELECT * FROM C:\inetpub\logs\LogFiles\W3SVC1\u_ex*.log" -i:W3C -o:txt

9. diskshadow

diskshadow 命令用于管理和配置卷影副本(VSS)。它允许你创建、删除和管理卷的快照,用于备份和恢复。

常见用法:

  • 创建卷影副本:

    bash
    diskshadow
    set context persistent
    add volume C: alias MyShadow
    create
  • 列出卷影副本:

    bash
    diskshadow
    list shadows all
  • 删除卷影副本:

    bash
    diskshadow
    delete shadows all

汇总表

命令/工具 功能描述 示例
sc failure 配置服务的失败响应策略 sc failure wuauserv reset=60 actions=restart/5000/3
sc config 配置服务的启动类型、二进制路径等 sc config wuauserv start= auto
sc sdset 设置服务的安全描述符(权限) sc sdset wuauserv D:(A;;CCLCSWRPWPDTLOCRSDRCWDWO;;;WD)
sc sdshow 显示服务的安全描述符(权限) sc sdshow wuauserv
gpupdate 强制更新组策略设置 gpupdate /force
gpresult 查看组策略的结果 gpresult /R
winrs 在远程计算机上执行命令 winrs -r:remotePC sc start wuauserv
logparser 查询日志文件并生成分析报告 logparser "SELECT * FROM <日志文件路径>" -i:evt -o:txt
diskshadow 创建和管理卷影副本(VSS) diskshadow  add volume C: alias MyShadow  create

这些工具和命令为 Windows 系统管理员提供了强大的服务管理、策略更新和日志分析功能,可以在日常维护和故障排除中发挥重要作用。


Windows 服务管理 相关的命令汇总,包括 srvcheckdriverquerypnputildiskshadowlogmanbcdeditaccesschksigcheck 等工具及其功能介绍。它们通常用于服务、驱动程序、硬件管理、系统配置等方面。

1. srvcheck

srvcheck 是一个工具,用于检查网络共享的服务可用性。它可以检测特定共享文件夹的服务是否正常运行,或在给定服务器上检查指定端口的响应。

常见用法:

bash
srvcheck <服务器名或IP地址> <共享名>
  • 该工具适用于检测 SMB 服务的状态和可用性。

2. driverquery

driverquery 用于列出所有已安装的驱动程序及其详细信息,包括驱动程序的状态、提供商等。

常见用法:

  • 列出所有驱动程序:
    bash
    driverquery
  • 显示驱动程序详细信息:
    bash
    driverquery /v
  • 按名称或类型筛选驱动:
    bash
    driverquery /fo list /v | findstr /i "service"

3. pnputil

pnputil 用于管理设备驱动程序,包括安装、删除或列出驱动程序包。它常用于处理驱动程序包(如 .inf 文件)和硬件设备。

常见用法:

  • 列出所有驱动程序包:
    bash
    pnputil /enum-drivers
  • 安装驱动程序包:
    bash
    pnputil /add-driver <驱动路径> /install
  • 删除驱动程序包:
    bash
    pnputil /delete-driver <驱动路径> /force

4. diskshadow

diskshadow 是一个用于创建和管理卷影副本的命令行工具,广泛应用于备份和恢复任务。它也可用于与系统服务和存储配置相关的任务。

常见用法:

  • 创建卷影副本:

    bash
    diskshadow

    进入交互模式后输入以下命令:

    bash
    set context persistent
    add volume C: alias Shadow1
    create
  • 列出所有卷影副本:

    bash
    diskshadow /list

5. logman

logman 是用于管理和创建性能日志、事件跟踪和报告的工具。它允许创建定期执行的日志任务,并用于监控和记录服务状态及其他系统活动。

常见用法:

  • 创建日志:
    bash
    logman create counter <日志名称> -c "\Processor(*)\% Processor Time"
  • 启动日志记录:
    bash
    logman start <日志名称>
  • 停止日志记录:
    bash
    logman stop <日志名称>
  • 查看当前日志:
    bash
    logman query

6. bcdedit

bcdedit 是一个命令行工具,用于管理启动配置数据(BCD)。它通常用于配置和修复启动选项,但也可以与服务和启动项相关的配置一同使用。

常见用法:

  • 查看当前启动项:

    bash
    bcdedit /v
  • 设置启动项:

    bash
    bcdedit /set {default} bootmenupolicy legacy
  • 修复启动项:

    bash
    bcdedit /repair

7. accesschk

accesschk 是一个由 Sysinternals 提供的工具,用于检查和显示文件、注册表项、服务、进程等的权限。它可以帮助管理员了解用户或组对服务的访问权限。

常见用法:

  • 检查服务权限:
    bash
    accesschk -s <服务名>
  • 检查文件夹权限:
    bash
    accesschk <文件夹路径>

8. sigcheck

sigcheck 由 Sysinternals 提供,用于验证文件(如服务的可执行文件)是否具有有效的签名,并显示数字签名和证书信息。

常见用法:

  • 检查文件签名:
    bash
    sigcheck -m <文件路径>
  • 检查服务可执行文件的签名:
    bash
    sigcheck -q <服务的可执行文件路径>

汇总表

命令/工具 功能描述 示例用法
srvcheck 检查网络共享的服务可用性 srvcheck <服务器名或IP地址> <共享名>
driverquery 列出已安装的驱动程序及其详细信息 driverquery /v
pnputil 管理设备驱动程序包(安装、删除、列出) pnputil /enum-drivers
diskshadow 管理卷影副本(创建、列出、删除) diskshadow /list
logman 管理和创建性能日志、事件跟踪和报告 logman create counter <日志名称>
bcdedit 管理启动配置数据(BCD),配置启动选项 bcdedit /v
accesschk 检查服务、文件夹、注册表项等的访问权限 accesschk -s <服务名>
sigcheck 验证文件签名,查看数字签名和证书信息 sigcheck -m <文件路径>

这些命令工具主要用于 Windows 服务管理驱动程序管理权限检查日志记录 等方面,可以帮助系统管理员有效地诊断和管理 Windows 系统中的服务和其他相关资源。


sc 命令用于管理和配置 Windows 服务。

命令 功能描述 选项示例用法
sc <server> query 查询服务的状态或枚举服务类型的状态 sc query - 枚举活动服务和驱动程序的状态
    sc query eventlog - 显示 eventlog 服务的状态
    sc queryex eventlog - 显示 eventlog 服务的扩展状态
sc <server> queryex 查询服务的扩展状态,或枚举服务类型的状态 sc queryex eventlog - 显示 eventlog 服务的扩展状态
sc <server> start 启动服务 sc start MyService - 启动 MyService 服务
sc <server> pause 向服务发送暂停控制请求 sc pause MyService - 暂停 MyService 服务
sc <server> interrogate 向服务发送查询控制请求 sc interrogate MyService - 查询 MyService 服务状态
sc <server> continue 向服务发送继续控制请求 sc continue MyService - 继续 MyService 服务
sc <server> stop 向服务发送停止请求 sc stop MyService - 停止 MyService 服务
sc <server> config 更改服务的配置(永久) sc config MyService start= demand - 将 MyService 服务设置为按需启动
sc <server> description 更改服务的描述 sc description MyService "My new service description" - 更改 MyService 服务的描述
sc <server> failure 更改服务的失败时执行的操作 sc failure MyService reset= 0 actions= restart/5000 - 设置 MyService 服务在失败时的行为
sc <server> failureflag 更改服务的失败操作标志 sc failureflag MyService = reboot - 设置 MyService 服务的失败时重启标志
sc <server> sidtype 更改服务的服务 SID 类型 sc sidtype MyService restricted - 设置 MyService 服务的 SID 类型为受限
sc <server> privs 更改服务所需的特权 sc privs MyService SeServiceLogonRight - 设置 MyService 服务所需的特权
sc <server> managedaccount 更改服务以将服务帐户密码标记为由 LSA 管理 sc managedaccount MyService - 设置 MyService 服务为由 LSA 管理帐户密码
sc <server> qc 查询服务的配置信息 sc qc MyService - 查询 MyService 服务的配置
sc <server> qdescription 查询服务的描述 sc qdescription MyService - 查询 MyService 服务的描述
sc <server> qfailure 查询失败时服务执行的操作 sc qfailure MyService - 查询 MyService 服务的失败时操作
sc <server> qfailureflag 查询服务的失败操作标志 sc qfailureflag MyService - 查询 MyService 服务的失败操作标志
sc <server> qsidtype 查询服务的服务 SID 类型 sc qsidtype MyService - 查询 MyService 服务的 SID 类型
sc <server> qprivs 查询服务的所需特权 sc qprivs MyService - 查询 MyService 服务所需的特权
sc <server> qtriggerinfo 查询服务的触发器参数 sc qtriggerinfo MyService - 查询 MyService 服务的触发器信息
sc <server> qpreferrednode 查询服务的首选 NUMA 节点 sc qpreferrednode MyService - 查询 MyService 服务的首选 NUMA 节点
sc <server> qmanagedaccount 查询服务是否将帐户与 LSA 管理的密码结合使用 sc qmanagedaccount MyService - 查询 MyService 服务是否由 LSA 管理密码
sc <server> qprotection 查询服务的进程保护级别 sc qprotection MyService - 查询 MyService 服务的进程保护级别
sc <server> quserservice 查询用户服务模板的本地实例 sc quserservice MyService - 查询用户服务模板的实例
sc <server> delete 从注册表中删除服务 sc delete MyService - 删除 MyService 服务
sc <server> create 创建服务(并将其添加到注册表中) sc create MyService binPath= "C:\path\to\service.exe" - 创建 MyService 服务并设置其可执行文件路径
sc <server> control 向服务发送控制命令 sc control MyService 128 - 向 MyService 服务发送控制命令(128是控制命令的标识符)
sc <server> sdshow 显示服务的安全描述符 sc sdshow MyService - 显示 MyService 服务的安全描述符
sc <server> sdset 设置服务的安全描述符 sc sdset MyService D:(A;;FA;;;SY) - 设置 MyService 服务的安全描述符
sc <server> showsid 显示与任意名称对应的服务 SID 字符串 sc showsid MyService - 显示 MyService 服务的 SID 字符串
sc <server> triggerinfo 配置服务的触发器参数 sc triggerinfo MyService - 配置 MyService 服务的触发器参数
sc <server> preferrednode 设置服务的首选 NUMA 节点 sc preferrednode MyService 0 - 设置 MyService 服务的首选 NUMA 节点
sc <server> GetDisplayName 获取服务的 DisplayName sc GetDisplayName MyService - 获取 MyService 服务的 DisplayName
sc <server> GetKeyName 获取服务的 ServiceKeyName sc GetKeyName MyService - 获取 MyService 服务的 ServiceKeyName
sc <server> EnumDepend 枚举服务依赖关系 sc EnumDepend MyService - 枚举 MyService 服务的依赖关系
sc <server> boot 指示是否将上一次启动另存为最近一次已知的正确启动配置 sc boot ok - 设置上一次启动为最近一次已知的正确启动配置
sc <server> Lock 锁定服务数据库 sc Lock - 锁定服务数据库
sc <server> QueryLock 查询 SCManager 数据库的 LockStatus sc QueryLock - 查询 SCManager 数据库的 LockStatus

这些命令可以帮助你管理 Windows 系统中的服务,包括查询、创建、删除、控制、配置等操作。sc 工具是系统管理员在 Windows 环境下非常重要的服务管理工具。


 


SC(Service Control)SRVANYWinswNSSMAlwaysUpFireDaemon Pro 都是用于在 Windows 操作系统中将普通应用程序作为服务运行的工具。它们各自有不同的功能、特点和使用场景。以下是这些工具的对比表格:

工具/特性 SC(Service Control) SRVANY Winsw NSSM AlwaysUp FireDaemon Pro
类型 内建工具 第三方工具 第三方工具 第三方工具 商业软件 商业软件
功能 管理和控制 Windows 服务 将应用程序作为服务运行 将 Java、.NET 或普通应用程序作为服务运行 将任意应用程序作为服务运行 专为应用程序服务设计 企业级服务管理工具
平台支持 Windows(所有版本) Windows 98/2000/XP/Server 2003 及更高版本 Windows 7/8/10/Server 2008 及更高版本 Windows 7/8/10/Server 2008 及更高版本 Windows 10/8/7/Server 2008/2012及更高版本 Windows Server 2003 及更高版本
安装方式 已内建在 Windows 中,使用命令行工具 安装简单,但依赖注册表设置 简单的安装程序,开源 安装程序,开源 安装程序,商业授权 安装程序,商业授权
配置方式 通过命令行配置 注册表设置 XML 配置文件 图形界面或命令行配置 图形界面配置 图形界面和命令行配置
服务管理 启动、停止、查询、配置、删除服务 不提供服务控制功能 支持控制服务的启动、停止等 支持服务控制、日志记录、配置 提供全面的服务控制和日志管理 提供全面的服务控制、监控和日志功能
日志记录 无内建日志功能 不支持日志 支持简单的日志记录 提供标准日志支持 支持详细日志记录,错误报警 强大的日志记录、监控和报警功能
依赖服务支持 支持服务依赖关系配置 支持服务依赖配置 支持依赖服务配置 支持依赖服务配置 支持复杂的服务依赖和优先级配置
跨平台支持 不支持 不支持 不支持 不支持 不支持 不支持
图形界面支持 无图形界面,只能通过命令行操作 无图形界面,只能通过注册表配置 无图形界面,仅 XML 配置 提供简单图形界面配置 提供完整图形界面,用户友好 提供完整图形界面,功能丰富
高级功能 功能相对基础 功能相对基础 适合 Java、.NET 和命令行程序 支持指定用户运行、优先级设置、调度等 提供重启机制、进程监控、资源管理 提供高级的进程管理、服务监控、自动重启
授权/费用 免费 免费 免费 免费(但有商业版本) 商业软件,收费 商业软件,收费
错误处理与恢复机制 基本的错误处理,依赖于操作系统 无内建错误恢复 支持进程崩溃后自动重启 支持进程崩溃后自动重启 支持进程崩溃后自动重启,详细错误恢复 高级错误恢复机制,自动重启和报警
适用场景 简单服务管理,适合快速启动服务 适合需要简单将应用程序作为服务运行的场景 适合 Java 应用或需要简单配置的情况 适合需要简单且可靠的服务创建的场景 适合需要强大服务监控和管理的场景 企业级应用,需要复杂服务管理、监控和报警

总结:

  • SC(Service Control):适用于简单的服务管理任务,内置于 Windows 中,功能较为基础,操作依赖命令行。
  • SRVANY:较老的工具,简单但功能较为有限,主要通过注册表配置,不支持日志记录等高级功能。
  • Winsw:轻量级、开源,适用于将 Java、.NET 或普通应用程序转化为 Windows 服务,功能强大但配置较为复杂。
  • NSSM:免费、开源,功能简洁,适合需要快速将应用程序转为服务的场景,支持日志记录和简单的错误恢复。
  • AlwaysUp:商业软件,功能强大,适合需要高度控制和监控服务的场景,支持进程重启、资源限制等。
  • FireDaemon Pro:商业级服务管理工具,适用于企业级应用,提供全面的服务管理、监控和日志功能,功能非常强大。

选择适合的工具需要根据你的应用需求、管理复杂度以及预算来决定。


SRVANYWinswNSSMAlwaysUpFireDaemon Pro 五个 Windows 服务管理工具的比较表格。我们从 安装方式配置功能支持的操作系统性能使用难度 等多个维度进行对比:

工具 SRVANY Winsw NSSM AlwaysUp FireDaemon Pro
开发者 Microsoft (旧版工具) Winsw(社区项目) Patrick O'Brian (NSSM 项目) Core Technologies FireDaemon Services
支持的操作系统 Windows XP / Server 2003 及以前版本 Windows XP / Server 2003 及以后版本 Windows 7 / Server 2008 及以后版本 Windows 7 / Server 2008 及以后版本 Windows XP / Server 2003 及以后版本
安装方式 通过命令行手动配置 可执行文件 (不需要安装) 可执行文件 (不需要安装) 可执行文件 (不需要安装) 可执行文件 (不需要安装)
易用性 配置较为复杂,适合高级用户 配置简单,易于集成 简单易用,适合大多数用户 非常用户友好,提供图形界面 图形化界面,功能强大,适合企业级用户
配置方式 手动注册服务,修改注册表 XML 配置文件 命令行配置,支持图形界面工具 图形界面配置,简便直观 图形界面配置,丰富的功能选项
自定义参数 支持 支持 支持(包括环境变量、启动参数等) 支持(提供丰富的启动选项和配置) 支持(环境变量、日志、启动参数等配置)
服务管理功能 基本的服务启动、停止管理 完整的服务管理,支持依赖、优先级等 基本的服务管理,支持重定向日志 完整的服务管理功能,支持自动重启等 完整的服务管理功能,支持丰富的设置
日志管理 无内置日志功能 无内置日志功能,依赖第三方工具 内置日志重定向功能 内置日志管理,支持详细的日志选项 内置日志管理,支持多种日志格式
依赖关系管理 不支持 支持(可在配置文件中指定依赖关系) 支持(可通过配置依赖项) 支持(支持服务依赖配置) 支持(可配置服务之间的依赖关系)
重启/崩溃恢复 不支持 不支持 支持(支持自动重启) 支持(自动重启选项) 支持(可设置崩溃重启策略)
性能开销 较低,但配置复杂 较低 中等(图形界面可能稍有开销) 较高(功能丰富,可能占用更多资源)
图形用户界面 无(仅命令行工具) 无(基于 XML 配置文件) 有(NSSM GUI 工具) 有(非常易于使用的图形界面) 有(专业的图形界面,适合企业使用)
开源/免费 免费,开源 开源(GPL 许可) 开源(MIT 许可) 付费(30天免费试用) 付费(提供试用版)
服务管理限制 功能有限,仅用于简单的后台程序 对简单应用支持良好,配置灵活 支持大部分常见应用,并可配置细节 完整功能,适合企业级使用 企业级功能,支持更高级别的服务管理
扩展性 较低 中等 中等(支持外部配置文件) 高(支持很多额外的功能选项) 非常高(支持脚本、自定义扩展等)
更新与维护 已停止更新(Microsoft 不再维护) 活跃开发(社区驱动) 活跃开发(社区驱动) 定期更新和支持 定期更新与支持

详细对比说明

  1. SRVANY

    • 作为一个较旧的工具,SRVANY 的功能非常基础,主要是将普通程序作为 Windows 服务运行。它的配置较为复杂,需要手动编辑注册表,并且不支持现代的日志管理、崩溃恢复等高级功能。
    • 适用场景:适用于需要非常简单、轻量级的服务管理工具,但不推荐用于复杂环境或需要图形界面的情况。
  2. Winsw

    • Winsw 是一个开源项目,支持通过 XML 配置文件来定义服务的行为。它对简单的后台程序支持较好,并且配置相对灵活。相比 SRVANY,Winsw 支持更多现代功能,但仍然缺乏图形界面。
    • 适用场景:适合需要自定义服务配置的开发者,尤其是对于简单的应用程序和脚本,适用于开发和小型企业环境。
  3. NSSM

    • NSSM(Non-Sucking Service Manager)是一个轻量级的工具,易于使用,支持通过命令行或图形界面管理服务。它内置支持日志重定向、环境变量和崩溃恢复等功能,是一种功能全面的解决方案。
    • 适用场景:适合个人开发者、中小型企业,尤其是需要快速将程序转为服务并进行基础配置的场景。
  4. AlwaysUp

    • AlwaysUp 是一个商业化产品,提供完整的服务管理功能,支持图形界面,具有非常高的可用性和易用性。它支持服务的自动重启、依赖管理、日志管理等高级功能。适合对服务可靠性有较高要求的企业用户。
    • 适用场景:适合中到大型企业,尤其是需要高可用性和详细配置的生产环境。
  5. FireDaemon Pro

    • FireDaemon Pro 是一个企业级的服务管理工具,功能非常全面,支持图形界面、崩溃恢复、依赖关系、日志管理等多种高级功能。适用于需要大规模、精细管理服务的企业环境。
    • 适用场景:适合大中型企业,尤其是需要高级定制化服务管理、可靠性和性能优化的情况。

总结

  • SRVANY 适合非常简单的服务管理,但缺乏现代化的功能。
  • Winsw 提供了较灵活的配置,适合开发者,但不支持图形界面。
  • NSSM 是一个简单易用的工具,适合个人和小型企业,提供了一定的功能扩展性。
  • AlwaysUp 和 FireDaemon Pro 提供了更全面和专业的服务管理功能,适合中到大型企业,前者偏向易用性,后者偏向功能和扩展性。

 

免费工具:

  1. SRVANY: 优点:
  • 允许将任何可执行文件转换为服务。
  • Windows自带工具,无需额外安装。
  • 简单易用,适合基本的服务管理需求。

缺点:

  • 功能相对简单,不支持高级的服务管理功能。
  • 不再得到官方支持和更新,可能存在一些稳定性问题。
  1. Winsw: 优点:
  • 简单易用,提供了一个简单的配置文件来转换应用程序为服务。
  • 开源免费,可以自由使用和定制。
  • 支持多种编程语言的应用程序。

缺点:

  • 功能相对基础,不支持一些高级的服务管理功能。
  • 不支持图形界面,配置需要通过命令行完成。
  • 带一个XML配置文件
  1. NSSM: 优点:
  • 提供丰富的服务管理功能,如重启策略、环境变量配置等。
  • 经过长时间测试,稳定可靠。
  • 支持多种操作系统和编程语言。

缺点:

  • 配置相对复杂,可能需要一定学习成本。
  • 不支持图形界面,配置需要通过命令行完成。

收费工具:

  1. AlwaysUp: 优点:
  • 提供用户友好的图形界面,使得配置服务变得简单直观。
  • 支持多种高级的服务管理功能,如监控、警报、自动重启等。
  • 商业软件,提供专业的支持和更新服务。

缺点:

  • 需要购买许可证,价格较高。
  • 对于一些基本的服务管理需求,可能功能过于强大,有些功能可能用不到。
  1. FireDaemon Pro: 优点:
  • 提供多种高级的服务管理功能,如监控、警报、自动重启等。
  • 商业软件,提供专业的支持和更新服务。
  • 支持多种操作系统。

缺点:

  • 需要购买许可证,价格较高。
  • 可能对于一些简单的服务管理需求而言,功能过于复杂。

 

PixPin_2025-10-04_15-01-27

Servy 让您能够将任何应用程序作为原生的 Windows 服务运行,并完全控制工作目录、启动类型、进程优先级、日志记录、健康检查、环境变量、依赖项、启动前和启动后钩子以及参数。它是 NSSM、WinSW、AlwaysUp 和 FireDaemon 的现代开源替代品。

Servy 提供图形用户界面、命令行界面和 PowerShell 模块,允许您以交互方式或通过脚本和 CI/CD 管道来创建、配置和管理 Windows 服务。此外,它还提供了一个管理器界面,用于实时快速监控和管理所有已安装的服务。

如果您曾苦于内置的 sc 工具的局限性,或觉得 NSSM 功能或用户界面不足,那么 Servy 可能正是您所需要的。它解决了 Windows 服务的一个常见限制,即允许您设置自定义工作目录。内置的 sc 工具仅适用于专门设计为作为 Windows 服务运行的应用程序,并且始终使用 C:\Windows\System32 且无法更改。这可能会破坏依赖相对路径、配置文件或本地资源的应用程序。Servy 允许您将任何应用程序作为服务运行,并明确定义启动目录,确保其行为与从快捷方式或命令提示符启动时完全一致。

Servy 持续监控您的应用程序,如果其崩溃、挂起或停止,会自动重启它。它非常适合让非服务应用程序在后台运行,而无需将其重写为服务。您可以用它来运行 Node.js、Python、.NET、Java、Go、Rust、PHP 或 Ruby 应用程序;在重启后保持 Web 服务器、后台工作进程、同步工具或守护进程存活;并通过内置的健康检查、日志记录和重启策略,在生产环境中自动化任务运行器、调度程序或脚本。

开始使用
您有两种安装 Servy 的选项:手动下载安装或使用包管理器,如 WinGet、Chocolatey 或 Scoop。

请确保您已安装 WinGet、Chocolatey 或 Scoop。

在命令提示符或 PowerShell 中以管理员身份运行以下命令之一:

WinGet

text
winget install servy

Chocolatey

text
choco install -y servy

Scoop

text
scoop bucket add extras
scoop install servy

快速链接

  • 下载

  • 概述

  • 安装指南

  • 使用指南

  • Servy 管理器

  • Servy CLI

  • 常见问题解答

  • 完整文档

功能特性

  • 简洁、直观的用户界面

  • 使用 Servy 管理器监控和管理所有已安装的服务

  • 实时跟踪已安装服务的 CPU 和 RAM 使用情况

  • 提供 CLI 和 PowerShell 模块,支持完整的脚本编写和自动化部署

  • 将任何可执行文件作为 Windows 服务运行

  • 设置服务名称、描述、启动类型、优先级、工作目录、环境变量、依赖项和参数

  • 在环境变量和进程参数中均支持环境变量扩展

  • 可以以 Local System、本地用户、域账户或 DOMAIN\gMSA$ 的形式运行服务

  • 将标准输出/标准错误重定向到日志文件,并支持基于大小的自动轮转

  • 在启动服务前运行启动前钩子,支持重试、超时、日志记录和故障处理

  • 在应用程序成功启动后运行启动后钩子

  • 通过改进的生命周期管理和确保资源清理,防止出现孤立/僵尸进程

  • 健康检查与自动服务恢复

  • 在 Servy 管理器中按级别、日期和关键字浏览和搜索日志,以便更快地进行故障排除

  • 导出/导入服务配置

  • 服务事件通知:通过 Windows 通知和电子邮件在服务故障时发出警报

  • 兼容 Windows 7–11 x64 及 Windows Server 各版本


SnowShot_2025-11-27_00-04-15

SnowShot_2025-11-27_00-03-48

SnowShot_2025-11-27_00-07-38

 

posted @ 2024-02-16 07:36  suv789  阅读(1959)  评论(0)    收藏  举报