我正在尝试创建一个快速的IF语句来禁用/启用网络摄像头。
到目前为止,我已经提出了:
$InstIDDisabled = Get-PnpDevice -FriendlyName "Camname" -Status error
$InstIDEnabled = Get-PnpDevice -FriendlyName "Camname" -Status OK
If($InstIDDisabled.Status -eq "error"){
Enable-PnpDevice -InstanceId $InstIDDisabled.InstanceId -Confirm:$false
else
Disable-PnpDevice -InstanceId $InstIDEnabled.InstanceId -Confirm:$false}
我得到的结果是:
Get-PnpDevice : No matching Win32_PnPEntity objects found by CIM query for instances of the ROOT\cimv2\Win32_PnPEntity class on the CIM server:
SELECT * FROM Win32_PnPEntity WHERE ((Name LIKE 'Camname')) AND ((Status = 'error')). Verify query parameters and retry.
At line:1 char:19
+ ... DDisabled = Get-PnpDevice -FriendlyName "Camname" -Status erro ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Win32_PnPEntity:String) [Get-PnpDevice], CimJobException
+ FullyQualifiedErrorId : CmdletizationQuery_NotFound,Get-PnpDevice
该错误似乎无法通过CIM查询看到网络摄像头,但是当单独运行(删除IF元素)时,它可以工作。
我要去哪里错了?
看来您的错误出现在第1行,但这也许是因为您在这里混淆了“ camname”。
您所指的问题可能是由于您的if/else
语句未正确括在括号中:
另请注意,我认为您无需显式检查$InstIDDisabled
等于“错误”的属性,因为无论如何您仅返回具有该属性的对象,因此您只需检查变量是否具有if语句。
$InstIDDisabled = Get-PnpDevice -FriendlyName "Camname" -Status error
$InstIDEnabled = Get-PnpDevice -FriendlyName "Camname" -Status OK
if ($InstIDDisabled) {
Enable-PnpDevice -InstanceId $InstIDDisabled.InstanceId -Confirm:$false
}
else {
Disable-PnpDevice -InstanceId $InstIDEnabled.InstanceId -Confirm:$false
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句