如何让powershell始终返回一个列表

Ian*_*Ian 0 powershell

我正在尝试在系统上获得主监视器的分辨率.所以

get-wmiobject -class win32_videocontroller
Run Code Online (Sandbox Code Playgroud)

将返回包含分辨率的单个对象或对象列表(术语可能不正确).如果要拉出单个值,例如.currenthorizo​​ntalresolution,则必须指定

(get-wmiobject -class win32_videocontroller).currenthorizontalresolution
Run Code Online (Sandbox Code Playgroud)

要么

(get-wmiobject -class win32_videocontroller)[0].currenthorizontalresolution
Run Code Online (Sandbox Code Playgroud)

取决于您的系统是否具有单个监视器,第一个工作的位置,或多个监视器,其中第二个工作.

我想使用单个表达式...但无法正确使用语法.我已经尝试了很多变化,但我无法弄清楚使用单行来获得第一个(或唯一)监视器的分辨率的语法.

要明确这是一个powershell语法问题,而不是wmi问题.

EBGreen建议

(,(get-wmiobject -class win32_videocontroller))[0].currenthorizontalresolution
Run Code Online (Sandbox Code Playgroud)

但这会回来

1366
Run Code Online (Sandbox Code Playgroud)

在具有单个监视器的系统上

1280
1920
Run Code Online (Sandbox Code Playgroud)

在有两个显示器的系统上.方向是正确的,我尝试了类似的选择,但不是很正确.

mjo*_*nor 5

您可以强制它始终使用'@'运算符返回数组:

@(get-wmiobject -class win32_videocontroller)[0].currenthorizontalresolution
Run Code Online (Sandbox Code Playgroud)