Запятая является оператором массива в PowerShell. Итак, ваша команда:
wmic desktopmonitor get screenwidth, screenheight
имеют следующее значение: вызвать wmic
с тремя аргументами: строка desktopmonitor
, строка get
и массив с двумя строками screenwidth
и screenheight
. Поскольку wmic
это родное приложение, PowerShell должен преобразовывать аргументы в командную строку. PowerShell использует пространство в качестве разделителя при преобразовании массива в командную строку. Итак, полученная командная строка будет следующей:
wmic desktopmonitor get screenwidth screenheight
Вы можете увидеть это, набрав следующую команду:
cmd /c echo wmic desktopmonitor get screenwidth, screenheight
Начиная с PowerShell v5, здесь есть один особый случай. Если массив предоставлен напрямую (не как подвыражение) и между запятыми и элементами массива нет пробелов, тогда PowerShell использует запятую в качестве разделителя при преобразовании массивов в командную строку.
PS> cmd /c echo 1,2,3 (4,5,6) 7,8 ,9 1,2,3 4 5 6 7 8 9
Эта команда:
wmic desktopmonitor get screenwidth,screenheight
квалифицироваться для этого особого случая, и полученная командная строка будет следующей:
wmic desktopmonitor get screenwidth,screenheight