zoukankan      html  css  js  c++  java
  • PowerShell2.0之Windows排错(三) 检查设备驱动

           设备驱动和服务功能类似,可以自动运行并提供一定功能。只是设备驱动更接近于硬件底层,并不像服务那样容易发现和检查。设备驱动一旦出现问题,往往伴随某种设备功能的失灵,所以对于系统管理员来说检查设备驱动也很重要。

    创建用于检查硬件驱动的脚本CheckDeviceDrivers.ps1,其代码如下:

    param($computer="localhost", $a="h", [switch]$help)

    function funHelp()

    {

    $helpText=@"

    DESCRIPTION:

    NAME: CheckDeviceDrivers.ps1

    Displays a listing of system drivers that are set to

    automatic, manual, boot, system or all drivers

    PARAMETERS:

    -computer The name of the computer

    -a(ction) < a(ll), r(unning), s(topped), b(oot),m(anual), au(to), sy(stem), h(elp) >

    -help prints help file

    SYNTAX:

    CheckDeviceDrivers.ps1 -computer WebServer -a b

    Displays a listing of all device drivers that are set to start on boot on a computer named WebServer

    CheckDeviceDrivers.ps1 -a auto

    Displays a listing of all device drivers on local computer set to start up automatically

    CheckDeviceDrivers.ps1 -computer WebServer -a m

    Displays a listing of all device drivers

    that are set to start manually on a computer named WebServer

    CheckDeviceDrivers.ps1 -help ?

    Displays the help topic for the script

    "@

    $helpText

    exit

    }

    if($help){ "Obtaining help ..." ; funhelp }

    switch($a)

    {

    "a" {

    "Retrieving all device drivers"

    $filter = "started = 'true' or started = 'false'"

    }

    "r" {

    "Retrieving all running device drivers"

    $filter = "started = 'true'"

    }

    "s" {

    "Retrieving all stopped device drivers"

    $filter = "started = 'false'"

    }

    "b" {

    "Retrieving boot device drivers"

    $filter = "startmode = 'boot'"

    }

    "m" {

    "Retrieving manual device drivers"

    $filter = "startmode = 'manual'"

    }

    "au" {

    "Retrieving auto device drivers"

    $filter = "startmode = 'auto'"

    }

    "sy" {

    "Retrieving system device drivers"

    $filter = "startmode = 'system'"

    }

    "h" {

    "You need to specify an action. The -a parameter is required"

    "Try this: " + $MyInvocation.MyCommand.Definition + " -h"

    exit

    }

    DEFAULT

    {

    "You need to specify an action. The -a parameter is required"

    "Try this: " + $MyInvocation.MyCommand.Definition + " -h"

    exit

    }

    }

    $wmi = Get-WmiObject -Class win32_systemdriver `

    -computername $computer -filter $filter

    format-table -InputObject $wmi -property `

    displayname, pathname, name -autosize

    该脚本通过param语句定义了-computer,-a和-help参数。其中-a指定要执行的操作,默认为h,即显示帮助信息。

    该脚本通过switch语句定义了主要操作的业务逻辑,允许用户指定一系列不同且相关的设备驱动。switch语句显示一条当前操作状态信息,然后通过设定$filter变量值,为Get-WmiObject cmdlet创建filter(筛选)参数。

    该脚本中调用了可以在多个switch语句中使用的$MyInvocation.MyCommand.Definition命令,用于在输出信息中引用正在运行的脚本。其核心功能是通过Get-WmiObject cmdlet查询Win32_SystemDriver WMI类,通过指定$computer变量查询指定的计算机,然后可以使用通过switch语句创建的筛选器并将查询结果保存在$wmi变量中。为了在输出时格式化该变量,使用了带-InputObject参数的Format-Table cmdlet。同时保存$wmi变量中的management对象,执行结果如图1所示。

    image

    图1 执行结果

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

  • 相关阅读:
    通信中的相干与非相干
    OFDM为什么要在频域内插后做fftshift
    OFDM为什么把高频子载波作为保护频带
    辛几何
    奇文共欣赏
    6G新技术
    高扇出导致的系统异常解决方法

    线程与守护线程
    进程之间的通行
  • 原文地址:https://www.cnblogs.com/fuhj02/p/1938404.html
Copyright © 2011-2022 走看看