码迷,mamicode.com
首页 > 系统相关 > 详细

Powershell 检测设备管理器

时间:2020-06-03 20:14:07      阅读:99      评论:0      收藏:0      [点我收藏+]

标签:vstat   manage   信息   man   entity   ret   while   number   manager   

Get-WmiObject -Class Win32_PNPEntity 获取设备信息

下图为其中一个设备的详细信息
技术图片

Name存在且 PNPClass 为 $Null 的设备为其他设备(Other Devices)

Status 为 "Error" 的设备为未正常工作设备(Yellow Bang)

PNPClass 表示设备所属类

通过比较数据的改变来检测设备的变化

function CatchChange {
    Write-Host("Listening Device Change")
    $device=Get-WmiObject -Class Win32_PNPEntity
    $device_num=$device.Length
    while ($device_num -eq((Get-WmiObject -Class Win32_PNPEntity).Length)){

    }
    $device_Change=Get-WmiObject -Class Win32_PNPEntity
    $device_Compare=Compare-Object $device $device_Change
    Write-Host($device_Compare.InputObject.Name) 
}

检测设备管理器,监听设备变化

技术图片

# 检测Device Manager 
# 0     Other Devices
# 1     Error Devices (Yellow Bang)
# 2     Camera Number

function GetDevStatus {
    $Device_other = @()
    $Device_yellowbang = @()
    $CameraNum=0
    $All_List = Get-WmiObject -Class Win32_PNPEntity
    foreach ($i in $All_List) {
        if ($Null -ne $i.Name  -and $Null -eq $i.PNPClass) {
            $Device_other += ($i.Name)
        }
        if ($i.Status -eq "Error") {
            $Device_yellowbang += ($i.Name)
        }
        if ($i.PNPClass -eq "Camera"){
            $CameraNum+=1
        }
    }
    return $Device_other, $Device_yellowbang,$CameraNum
}

function CatchChange {
    Write-Host("************Listening Device Change************")
    $device=Get-WmiObject -Class Win32_PNPEntity
    $device_num=$device.Length
    while ($device_num -eq((Get-WmiObject -Class Win32_PNPEntity).Length)){

    }
    if ($device_num -gt((Get-WmiObject -Class Win32_PNPEntity).Length)){
        Write-Host("Remove Device")
    }
    else{
        Write-Host("Add Device")
    }
    $device_Change=Get-WmiObject -Class Win32_PNPEntity
    $device_Compare=Compare-Object $device $device_Change
    Write-Host($device_Compare.InputObject.Name) 
}

# CatchChange
$a = GetDevStatus
 
if ($Null -eq $a) {
    Write-Host("No Error")
}
else {
    Write-Host("************Other Devices************")
    $a[0]
    Write-Host("")
    Write-Host("************YellowBang Devices************")
    $a[1]
    Write-Host("")
    Write-Host("************Camera Num************")
    $a[2]
}
while ($True){
    CatchChange
}

Powershell 检测设备管理器

标签:vstat   manage   信息   man   entity   ret   while   number   manager   

原文地址:https://www.cnblogs.com/jyang/p/13039701.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!