欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

Windows Server 2016-命令行方式管理Windows服务

程序员文章站 2022-09-22 08:34:26
Microsoft Windows 服务(过去称为 NT 服务)允许用户创建可在其自身的 Windows 会话中长时间运行的可执行应用程序。 这些服务可在计算机启动时自动启动,可以暂停和重启,并且不显示任何用户界面。 这些功能使服务非常适合在服务器上使用,或者需要长时间运行的功能(不会影响在同一台计... ......

microsoft windows 服务(过去称为 nt 服务)允许用户创建可在其自身的 windows 会话中长时间运行的可执行应用程序。 这些服务可在计算机启动时自动启动,可以暂停和重启,并且不显示任何用户界面。 这些功能使服务非常适合在服务器上使用,或者需要长时间运行的功能(不会影响在同一台计算机上工作的其他用户)的情况。 还可以在与登录用户或默认计算机帐户不同的特定用户帐户的安全性上下文中运行服务。

本例介绍三种常规方法,涉及到dos下的net、sc和powershell下的get/start/stop/set/new/restart/resume-service方法。

1.net命令方式:

c:\>net /?
此命令的语法是:
net
    [ accounts | computer | config | continue | file | group | help |
      helpmsg | localgroup | pause | session | share | start |
      statistics | stop | time | use | user | view ]
c:\>
格式:启动和关闭服务的时候,其语法是:
net start 服务名
net stop 服务名

例:查看server服务状态:

例:停止&启动服务:


2.sc命令方式:

c:\>sc /?
描述:
        sc 是用来与服务控制管理器和服务进行通信
        的命令行程序。
用法:
        sc <server> [command] [service name] <option1> <option2>...
        <server> 选项的格式为 "\\servername"
        可通过键入以下命令获取有关命令的更多帮助: "sc [command]"
        命令:
          query-----------查询服务的状态,或枚举服务类型的状态。
          queryex---------查询服务的扩展状态,或枚举服务类型的状态。
          start-----------启动服务。
          pause-----------向服务发送 pause 控制请求。
          interrogate-----向服务发送 interrogate 控制请求。
          continue--------向服务发送 continue 控制请求。
          stop------------向服务发送 stop 请求。
          config----------更改服务的配置(永久)。
          description-----更改服务的描述。
          failure---------更改失败时服务执行的操作。
          failureflag-----更改服务的失败操作标志。
          sidtype---------更改服务的服务 sid 类型。
          privs-----------更改服务的所需特权。
          managedaccount--更改服务以将服务帐户密码标记为由 lsa 管理。
          qc--------------查询服务的配置信息。
          qdescription----查询服务的描述。
          qfailure--------查询失败时服务执行的操作。
          qfailureflag----查询服务的失败操作标志。
          qsidtype--------查询服务的服务 sid 类型。
          qprivs----------查询服务的所需特权。
          qtriggerinfo----查询服务的触发器参数。
          qpreferrednode--查询服务的首选 numa 节点。
          qmanagedaccount-查询服务是否将帐户与 lsa 管理的密码结合使用。
          qprotection-----查询服务的进程保护级别。
          quserservice----查询用户服务模板的本地实例。
          delete ----------(从注册表中)删除服务。
          create----------创建服务(并将其添加到注册表中)。
          control---------向服务发送控制。
          sdshow----------显示服务的安全描述符。
          sdset-----------设置服务的安全描述符。
          showsid---------显示与任意名称对应的服务 sid 字符串。
          triggerinfo-----配置服务的触发器参数。
          preferrednode---设置服务的首选 numa 节点。
          getdisplayname--获取服务的 displayname。
          getkeyname------获取服务的 servicekeyname。
          enumdepend------枚举服务依赖关系。
        以下命令不需要服务名称: sc <server> <command> <option>
          boot------------(ok | bad)指示是否应将上一次启动另存为最近一次已知的正确启动配置
          lock------------锁定服务数据库
          querylock-------查询 scmanager 数据库的 lockstatus
示例:   sc start myservice
query 和 queryex 选项:
        如果查询命令带服务名称,将返回
        该服务的状态。其他选项不适合这种
        情况。如果查询命令不带参数或
        带下列选项之一,将枚举此服务。
    type=    要枚举的服务的类型(driver, service, userservice, all)   (默认 = service)
    state=   要枚举的服务的状态 (inactive, all)    (默认 = active)
    bufsize= 枚举缓冲区的大小(以字节计)            (默认 = 4096)
    ri=      开始枚举的恢复索引号       (默认 = 0)
    group=   要枚举的服务组             (默认 = all groups)
语法示例
sc query                - 枚举活动服务和驱动程序的状态
sc query eventlog       - 显示 eventlog 服务的状态
sc queryex eventlog     - 显示 eventlog 服务的扩展状态
sc query type= driver   - 仅枚举活动驱动程序
sc query type= service  - 仅枚举 win32 服务
sc query state= all     - 枚举所有服务和驱动程序
sc query bufsize= 50    - 枚举缓冲区为 50 字节
sc query ri= 14         - 枚举时恢复索引 = 14
sc queryex group= ""    - 枚举不在组内的活动服务
sc query type= interact - 枚举所有不活动服务
sc query type= driver group= ndis     - 枚举所有 ndis 驱动程序
sc是用于与服务控制管理器和服务进行通信的命令行程序,其语法是:
sc config  服务名 start= demand   //手动
sc config  服务名 start= auto     //自动
sc config  服务名 start= disabled //禁用
sc start   服务名  开启服务
sc stop    服务名  停止服务
sc query   服务名  查看服务状态
sc delete  服务名    删除服务
sc qc      服务名    查看服务的配置信息
sc create scname binpath=xxxxxx.exe  创建服务

例:查看server服务属性:

例:停止&启动服务:


3.powershell命令方式:

ps c:\> help *-service*
name                category  module                    synopsis
----                  --------  ------                    --------
resume-service      cmdlet    microsoft.powershell.m... resume-service...
restart-service     cmdlet    microsoft.powershell.m... restart-service...
set-service         cmdlet    microsoft.powershell.m... set-service...
get-service         cmdlet    microsoft.powershell.m... get-service...
suspend-service     cmdlet    microsoft.powershell.m... suspend-service...
start-service       cmdlet    microsoft.powershell.m... start-service...
stop-service        cmdlet    microsoft.powershell.m... stop-service...
new-service         cmdlet    microsoft.powershell.m... new-service...
get-service   [[-name] <string[]>]   [-dependentservices]   [-requiredservices]   [-include <string[]>]   [-exclude <string[]>]   [<commonparameters>]
get-service   [-dependentservices]   [-requiredservices]   -displayname <string[]>   [-include <string[]>]   [-exclude <string[]>]   [<commonparameters>]
get-service   [-dependentservices]   [-requiredservices]   [-include <string[]>]   [-exclude <string[]>]   [-inputobject <servicecontroller[]>]   [<commonparameters>]
描述:在获取-服务 cmdlet获取代表计算机,包括运行和停止服务的服务对象。
您可以通过指定服务的名称或服务的显示名称来指示此cmdlet仅获取特定服务,也可以将服务对象传递给此cmdlet。
1:获取计算机上的所有服务
get-service
此命令获取计算机上的所有服务。它表现得好像你输入的那样get-service *。默认显示屏显示每项服务的状态,服务名称和显示名称。
2:获取以搜索字符串开头的服务
get-service "wmi*"
此命令检索服务名称以wmi(windows management instrumentation的首字母缩写)开头的服务。
3:显示包含搜索字符串的服务
get-service -displayname "*network*"
此命令显示具有包含单词network的显示名称的服务。即使服务名称不包含“net”(例如xmlprov,网络配置服务),搜索显示名称也会查找与网络相关的服务。
4:获取以搜索字符串和排除项开头的服务
get-service -name "win*" -exclude "winrm"
除winrm服务外,这些命令仅获取服务名称以win开头的服务。
5:显示当前活动的服务
get-service | where-object {$_.status -eq "running"}
此命令仅显示当前活动的服务。它使用get-service cmdlet获取计算机上的所有服务。管道运算符(|)将结果传递给where-object cmdlet,该cmdlet仅选择status属性等于running的服务。
状态只是服务对象的一个属性。要查看所有属性,请键入get-service | get-member。
6:获取服务的从属服务
get-service "winrm" -requiredservices
此命令获取winrm服务所需的服务。
该命令返回服务的servicesdependedon属性的值。
9:通过管道运算符获取服务
"winrm" | get-service
此命令获取本地计算机上的winrm服务。此示例显示您可以将服务名称字符串(用引号括起来)传递给get-service。
您还可以通过其内置别名“gsv” 来引用get-service。
仅当当前用户有权查看它们时,此cmdlet才能显示服务。如果此cmdlet不显示服务,则您可能无权查看它们。
要查找系统上每个服务的服务名称和显示名称,请键入get-service。服务名称显示在“名称”列中,显示名称显示在“displayname”列中。
按状态值按升序排序时,“已停止”服务将出现在“正在运行”服务之前。服务的status属性是枚举值,其中状态的名称表示整数值。排序基于整数值,而不是名称。“正在运行”出现在“已停止”之前,因为“已停止”的值为“1”,“正在运行”的值为“4”。

例:查看服务状态:

例:关闭服务&启动服务:

备注:

start-service,启动服务。     stop-service,停止服务。restart-service,重启服务。 suspend-service,挂起/暂停服务。

resume-service,继续服务。set-service,设置服务的属性。new-service,创建新服务。使用方法类似。