0

デバイスが現在エラー レベルにあるかどうかを確認するスクリプトを作成しようとしています (デバイス マネージャーで黄色の感嘆符が付いています)。私が自動化しようとしている最終的なタスクは、ドライバーをインストールし、正しくインストールされているかどうかを確認し、アンインストールしてから、アンインストールされたことを確認するために再度確認することです。私はそのほとんどを把握しましたが、WQL クエリに問題があります。エラー レベルが 0 以外のドライバーがあるかどうかを照会したり、特定のデバイス ID を持つドライバーがあるかどうかを照会したりできますが、両方を実行しようとすると、「drivertest.vbs(4,1) Microsoft VBSCript ランタイム エラー」で失敗します: タイプの不一致: '[string: "Select * from Win32_"]' これは私が持っているコードです:

strComputer = "."
Set objWMIService = GetObject(_
    "winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
    ("Select * from Win32_PnPEntity " _
        & "WHERE ConfigManagerErrorCode <> 0" AND "WHERE objItem.DeviceID = 'acpi\int33d6'")
For Each objItem in colItems
    Wscript.Echo "Class GUID: " & objItem.ClassGuid
    Wscript.Echo "Description: " & objItem.Description
    Wscript.Echo "Device ID: " & objItem.DeviceID
    Wscript.Echo "Manufacturer: " & objItem.Manufacturer
    Wscript.Echo "Name: " & objItem.Name
    Wscript.Echo "PNP Device ID: " & objItem.PNPDeviceID
    Wscript.Echo "Service: " & objItem.Service
Next
4

2 に答える 2

0

これを試して。あなたの問題はバックスラッシュだと思います。これらは WQL でエスケープする必要があります。の二重バックスラッシュに注意してくださいacpi\\int33d6

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_PnPEntity WHERE ConfigManagerErrorCode<>0 AND DeviceID='acpi\\int33d6'")

For Each objItem In colItems
    Wscript.Echo "Class GUID: " & objItem.ClassGuid
    Wscript.Echo "Description: " & objItem.Description
    Wscript.Echo "Device ID: " & objItem.DeviceID
    Wscript.Echo "Manufacturer: " & objItem.Manufacturer
    Wscript.Echo "Name: " & objItem.Name
    Wscript.Echo "PNP Device ID: " & objItem.PNPDeviceID
    Wscript.Echo "Service: " & objItem.Service
Next
于 2014-09-17T19:46:36.197 に答える
0

わかった!@Bond のご協力に感謝します!!! あまりにも多くの WHERE ステートメントの組み合わせであり、= の代わりに LIKE を使用する必要がありました

strComputer = "."
Set objWMIService = GetObject(_
    "winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery ("Select * from Win32_PnPEntity WHERE DeviceID LIKE   '%int33d6%' AND ConfigManagerErrorCode <> 0")

For Each objItem in colItems
    Wscript.Echo "Class GUID: " & objItem.ClassGuid
    Wscript.Echo "Description: " & objItem.Description
    Wscript.Echo "Device ID: " & objItem.DeviceID
    Wscript.Echo "Manufacturer: " & objItem.Manufacturer
    Wscript.Echo "Name: " & objItem.Name
    Wscript.Echo "PNP Device ID: " & objItem.PNPDeviceID
    Wscript.Echo "Service: " & objItem.Service
Next

今ではチャンピオンのように機能します:-)

于 2014-09-17T20:47:23.510 に答える