Замените "$($($connections.VideoOutputTechnology))"
на $connections.VideoOutputTechnology
.
"$($($connections.VideoOutputTechnology))"
, за исключением ненужного использования $(...)
дважды , строковых массивов, возвращаемых $connections.VideoOutputTechnology
, которая по умолчанию создает единственную строку, содержащую (stringified) элементы в виде списка, разделенного пробелами.
В качестве отступления, просто чтобы уточнить: Write-Host
обычно не подходит для использования , если только намерение не состоит в том, чтобы записать только на дисплей , минуя поток успешных выходных данных и вместе с ним возможность отправлять выходные данные другим командам, захватывать его в переменную, перенаправлять в файл.(В PSv5 + Write-Host
запись в информационный поток , выход которого может быть может быть захвачен, но только через 6>
; см. этот ответ .)
Кроме того, использование оператора switch
вместо цикла foreach
с несколькими операторами if
позволяет упростить решение.
Собрать все вместе:
$connections = get-ciminstance -namespace root/wmi -classname WmiMonitorConnectionParams
$videooutput = $connections.VideoOutputTechnology
switch ($videooutput) {
10 { "DP"; continue }
4 { "DVI"; continue }
5 { "HDMI"; continue}
0 { "VGA"; continue }
default { "unknown"}
}