如果硬件不存在,Powershell错误



我正在尝试获得一个powershell脚本,看看我是否有一个USB扫描仪连接。

如果它在那里,它就像我需要的那样工作,如果它不在那里,它会出错。

我希望能够让它结束,或者让我知道没有附加扫描仪。

不存在的行是:

$USBscanner = wmic path CIM_LogicalDevice where "DeviceID like 'USB\VID_0C2E%' and DeviceID like 'USB\%PID_0B01%' and Description like 'USB Composite Device%'" get /value

在继续执行脚本之前,您总是可以检查变量是否有任何数据,并提前结束:

if (-not $USBscanner) { Throw 'USB Scanner not found!' }

或者你可以让所有的错误终止你的脚本首选项:

$ErrorActionPreference = 'Stop'

如果你不想终止脚本,你可以trycatchwmic.exe的错误:

Try {
$ErrorActionPreference = 'Stop'
wmic path CIM_LogicalDevice WHERE 'DeviceID="MissingDevice"'
}
Catch {
Write-Warning 'USB Scanner not found'
}

作为建议,您最好使用实际的Powershell cmdlet和上面的if语句。这些命令返回powershell用来操作的实际对象:

# check if USB scanner device is attached:
$USBscanner = Get-CimInstance -ClassName CIM_LogicalDevice | 
where {$_.DeviceID -Like 'USBVID_0C2E*' -and $_.DeviceID -like 'USB*PID_0B01*'}
if (-not $USBscanner) { Throw 'USB Scanner not found!' }

最新更新