我正在尝试获得一个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'
如果你不想终止脚本,你可以try
和catch
从wmic.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!' }