zoukankan      html  css  js  c++  java
  • Windows PowerShell 2.0之服务管理

    当操作服务时,PowerShell传递System.ServiceProcess.ServiceController对象,获取一个或多个对象的简单方法是使用Get-Service cmdlet。当不带参数调用时会返回当前系统中注册的所有服务,这样即可用这个cmdlet生成快速报告。下例获取当前运行的所有服务:

    PS C:\PowerShell> Get-Service | where {$_.Status -eq "Running"}

    Status Name DisplayName

    ------ ---- -----------

    Running ALG Application Layer Gateway Service

    Running AudioSrv Windows Audio

    Running BITS Background Intelligent Transfer Ser...

    Running Browser Computer Browser

    Running btwdins Bluetooth Service

    Running CryptSvc Cryptographic Services

    Running DcomLaunch DCOM Server Process Launcher

    Running Dhcp DHCP Client

    Running dmserver Logical Disk Manager

    Running Dnscache DNS Client

    Running Eventlog Event Log

    Running EventSystem COM+ Event System

    Running FastUserSwitchi... Fast User Switching Compatibility

    Running HidServ HID Input Service

    …….

    可以通过服务名通配符来查询,下例通过服务名类似DNS*的通配符查询DNS client服务:

    PS C:\PowerShell> Get-Service DNS*

    Status Name DisplayName

    ------ ---- -----------

    Running Dnscache DNS Client

    需要查找相关服务时,在查询的服务名称中使用通配符也很有效,相关服务通常有相似的名称。下例通过获取所有匹配*net*通配符获取Windows下与网络相关的服务:

    PS C:\PowerShell> Get-Service *net*

    Status Name DisplayName

    ------ ---- -----------

    Stopped aspnet_state ASP.NET State Service

    Stopped NetDDE Network DDE

    Stopped NetDDEdsdm Network DDE DSDM

    Stopped Netlogon Net Logon

    Running Netman Network Connections

    Stopped VMnetDHCP VMware DHCP Service

    【注意】

    通配符应用于服务名,而不是显示名。这就是为什么使用*net*这种形式的通配符获取的服务中仅是名称中显示包含net字样服务的一部分,即部分以net为服务显示名的服务的真实名称并不以net开头。

    1 改变服务状态

    Windows提供的控制台工具net.exe可以启动和停止服务。由于这个程序中包含很多功能,过于复杂,而不利于PowerShell各部分松耦合的要求。例如,能够添加和移除共享驱动器。PowerShell提供了内置cmdlet用来改变服务状态,如启动、停止、挂起和恢复服务,所有的命令均直接调用。启动服务使用Start-Service:

    PS C:\> Start-Service W32Time

    也可以通过调用ServiceControler的Start方法来启动服务:

    PS C:\> (Get-Service W32Time).Start()

    需要强调的是改变服务状态需要管理员权限。

    停止服务可以使用Stop-Service:

    PS C:\> Stop-Service W32Time

    也可使用Stop方法停止服务:

    PS C:\> (Get-Service W32Time).stop()

    其他改变服务状态操作的cmdlet如Restart-Service、Suspend-Service和Resume-Service与上类似。

    【说明】

    改变服务会影响系统的整体运行,所以需要管理员权限。如果运行Windows Vista及其以上版本的操作系统,务必要在高级权限的Shell中执行操作。

    2 改变服务的属性

    PowerShell提供了cmdlet Set-Service允许用户改变服务的任何属性,包括服务名和描述。但这是比较危险的操作,执行时应格外小心,因为更改服务名后可忘记服务到底是哪一个。Set-Service可以改变服务启动方式,下例将W32Time服务的启动方式改变为Disabled:

    PS C:\> Set-Service W32Time –StartupType Disabled

    在每次启动时自动运行某个服务的方式是将其启动类型改为Automatic,如:

    PS C:\> Set-Service W32Time –StartupType Automatic

    需要强调的是因涉及系统的稳定运行,所以在启动、关闭或者改变服务的启动方式时一定要谨慎。有些服务是Windows操作系统正常运行所必需的,停止或禁用这些服务将会引起系统某些功能停止。

    3 分析服务的依赖性

    一些服务的运行经常会依赖于其他服务,服务管理控制台管理单元显示这些依赖关系。如果需要在PowerShell进程或脚本中获取这些信息,则可以读取ServiceControler、DependentServices和ServicesDependedOn属性,它们分别用于返回当前服务依赖的服务和依赖当前服务的所有服务,如:

    PS C:\> (Get-Service winmgmt).DependentServices

    Status Name DisplayName

    ------ ---- -----------

    Running wscsvc Security Center

    Running SharedAccess Windows Firewall/Internet Connectio...

    PS C:\> (Get-Service winmgmt).ServicesDependedOn

    Status Name DisplayName

    ------ ---- -----------

    Running RPCSS Remote Procedure Call (RPC)

    其中显示WMI服务依赖于Remote Procedure Call服务,同时Security Center和Windows Firewall/Internet Connection服务依赖于它。

    4 总 结

    进程在操作系统中用于处理数据和进程间的交换,PowerShell的进程和服务管理机制能分析进程信息,并且直接操作进程实例指向的对象。本文讲述了如何使用PowerShell统一访问服务的方法并创建在PowerShell中操作服务的环境,这是系统管理自动化的重要步骤。

    作者: 付海军
    出处:http://fuhj02.cnblogs.com
    版权:本文版权归作者和博客园共有
    转载:欢迎转载,为了保存作者的创作热情,请按要求【转载】,谢谢
    要求:未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任
    个人网站: http://txj.shell.tor.hu/

  • 相关阅读:
    vue+element-ui实现前端分页
    element-UI中table表格的row-click事件怎么获取一行数据的id
    使用一个for循环将N*N的二维数组的所有值置1
    http常见的状态码
    反转一个英文句子中的单词,并且对应位置大小写不改变
    用一条SQL语句查出每门课都大于80分的学生的姓名
    平滑重启原理及平滑更新
    php之命名空间
    php之trait-实现多继承
    C入门之一
  • 原文地址:https://www.cnblogs.com/fuhj02/p/1910344.html
Copyright © 2011-2022 走看看