Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Мониторы, выбрать нужное значение.

Ответить
Настройки темы
PowerShell - [решено] Мониторы, выбрать нужное значение.

Старожил


Сообщения: 211
Благодарности: 2

Профиль | Отправить PM | Цитировать


Всем доброго времени суток! Требуется получить информацию о модели\сн мониторов. Команды найдены и хорошо отрабатывают, но когда в конфигурации пк больше одного монитора, то отображается две, три модели\сн монитора в одну строку:
Код: Выделить весь код
HP E231      LG IPS FULLHD
Я написал костыль, который раскидывает на две переменные, но понимаю, что это не так должно работать
Код: Выделить весь код
$mn = gwmi wmimonitorid -Namespace root\wmi
$mmod1 = ([char[]]($mn.UserFriendlyName)-join "")[0..12];$mmod2 = ([char[]]($mn.UserFriendlyName)-join "")[13..26];$msn1 = ([char[]]($mn.SerialNumberID)-join "")[0..15];$msn2 = ([char[]]($mn.SerialNumberID)-join "")[16..32]
Пробовал по другому:
Код: Выделить весь код
([System.Text.Encoding]::ASCII.GetString($wmiMonitorID.UserFriendlyName)).Replace("$([char]0x000)","")
тогда значения просто слитно
Код: Выделить весь код
HP E231LG IPS FULLHD
Как правильно раскидать значения на переменные или выбрать только первое\второе?

Отправлено: 16:37, 09-02-2021

 

Старожил


Сообщения: 211
Благодарности: 2

Профиль | Отправить PM | Цитировать


решение нашлось, опять невероятный костыль. Наверно есть более правильное решение, но тут получается, что модуль редактирован и работает как надо.
-костыль для первого монитора:
Код: Выделить весь код
if ($wmiMonitorID.UserFriendlyName -ne $null)
{
    $dispname  = $null
    $dispname=([System.Text.Encoding]::ASCII.GetString($wmiMonitorID.UserFriendlyName)).Split("$([char]0x000)")|Select-Object -First 1
    $dispname
}
else
{
"NotSupported"
}
костыль для второго монитора:
Код: Выделить весь код
if ($wmiMonitorID.UserFriendlyName.Length -gt 13)
{
    $dispname  = $null
    $dispname=((([System.Text.Encoding]::ASCII.GetString($wmiMonitorID.UserFriendlyName)).Replace("$([char]0x000)","&")).Split('&').where{$_} -join '&').split("&")[-1]
    $dispname
}
else
{
"NotSupported"
}

Последний раз редактировалось Griboed0ff, 15-02-2021 в 07:13. Причина: правильное решение


Отправлено: 12:34, 10-02-2021 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Мониторы, выбрать нужное значение.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Как получить значение параметра из реестра, добавить значение в текстовый файл etc.? Dark Ange1 Скриптовые языки администрирования Windows 28 22-06-2022 14:37
Обновление БИОС - как выбрать нужное egorus2010 Материнские платы и память 4 17-06-2021 12:15
Загрузка - XP SP3. Значение «громкость» сбрасывается в среднее значение при перезагрузке. mitkadritka Microsoft Windows 2000/XP 9 24-02-2012 20:37
Wireless - [решено] Помогите выбрать нужное оборудование Vlademort Сетевое оборудование 7 24-03-2011 12:06
Нужна програма для автоматического скачивание из интернета в нужное время нужное мест Месроп Хочу все знать 6 10-12-2009 21:19




 
Переход