如何通过 powershell 或 cmd 计算屏幕数量
Posted
技术标签:
【中文标题】如何通过 powershell 或 cmd 计算屏幕数量【英文标题】:How to count number of screens via powershell or cmd 【发布时间】:2022-01-03 08:57:04 【问题描述】:我想统计通过 powershell/cmd 检测到的屏幕数量。
得到以下工作,但我想计算检测为数字的屏幕数量。
@for /F "usebackq tokens=2 delims=: " %i IN (`powershell.exe Get-CimInstance -Namespace root\wmi -ClassName WmiMonitorBasicDisplayParams ^| findstr /r /C:"Active"`) do @echo %i
假设我连接了 2 个屏幕,这将返回以下内容。有人可以帮我将输出更改为活动屏幕的数量,而不是数字/或计算真实的数量吗?即 = 2
True
True
【问题讨论】:
您想使用Powershell,还是使用批处理文件?选择一个。 @DanielMann powershellpowershell.exe … | findstr /C:"Active" | find /C /V ""
?
【参考方案1】:
您已经有了解决方案,只是无缘无故地将批处理语法与 PowerShell 混合。
@(Get-CimInstance -Namespace root\wmi -ClassName WmiMonitorBasicDisplayParams).Length
是一个纯 PowerShell 解决方案。
如果您想将其过滤为仅活动显示,那么@(Get-CimInstance -Namespace root\wmi -ClassName WmiMonitorBasicDisplayParams | where-object $_.Active ).Length
。
【讨论】:
既然 OP 想要一个 count,那么使用.Count
属性会更合适吗?您已经在强制 CIM 调用提供一个数组... [grin]【参考方案2】:
如果您打算只使用批处理文件,请使用内部实用程序。
FOR /F "delims=:" %%a in ('wmic /namespace:\\root\wmi path WmiMonitorBasicDisplayParams get Active ^|findstr /n "Active"') DO @echo %%a
附:
但是请记住wmic.exe
不再是support。
【讨论】:
【参考方案3】:我没有代表直接向@Daemon-5 添加评论,但我发现他的代码对我不起作用,因为它只报告连接了一个监视器,而我实际上有 2 个(通过扩展坞连接)。
这是我正在使用的:
for /F %%M in ('wmic path Win32_PnPEntity where "Service='monitor' and Status='OK'" get DeviceID /VALUE ^| find /C "="') do (set monitors=%%M)
然后你可以简单地echo %monitors%
【讨论】:
以上是关于如何通过 powershell 或 cmd 计算屏幕数量的主要内容,如果未能解决你的问题,请参考以下文章
如何通过Powershell在域计算机上查询Active Directory而不在客户端计算机上安装RSAT工具
Win10小技巧:如何将在此处打开命令改为CMD或Powershell?