PowerShell中统计Get-PnpDevice同FriendlyName设备数并赋值变量
PowerShell 获取匹配PnP设备数量的解决方案
你可以通过以下方法正确将匹配到的设备总数赋值给$NoOfDis变量,同时优化原有逻辑:
核心实现逻辑
先将Get-PnpDevice的查询结果统一存储到变量,避免重复执行查询导致的结果不一致,直接调用返回对象的Count属性即可获取设备总数,正确赋值代码如下:
# 先存储所有匹配的Generic USB类设备对象 $genericUsbDevices = Get-PnpDevice -FriendlyName '*Generic USB*' # 直接读取数量属性赋值给目标变量 $NoOfDis = $genericUsbDevices.Count
原有代码问题说明
- 赋值语法错误:原有代码
$NoOfDis - Get-PnpDevice...中错把赋值符=写为减号- - 比较逻辑错误:直接将
Get-PnpDevice的返回对象和数字做大小对比是无效的,必须基于返回结果的数量属性判断 - 多设备兼容问题:当匹配到多个设备时,直接展开
InstanceId会得到数组,传入Disable-PnpDevice会执行报错
修正后完整可运行代码
# 一次性查询所有匹配设备 $genericUsbDevices = Get-PnpDevice -FriendlyName '*Generic USB*' # 赋值设备总数 $NoOfDis = $genericUsbDevices.Count if ($NoOfDis -gt 1) { "More than 1 " } elseif ($NoOfDis -eq 1) { "Equal to 1" # 仅单设备时读取实例ID执行禁用 $env:disid = $genericUsbDevices.InstanceId Disable-PnpDevice -InstanceId $env:disid -Confirm:$false } else { "No device connected" }
内容的提问来源于stack exchange,提问作者Zero
相关产品推荐
相关产品推荐

