Что нового

Получение отчета о мониторах через WMI

DirtyJohny

Новичок
Сообщения
46
Репутация
0
Всем доброго дня. Очень хотел бы получить помощь. Наткнулся скрипт\команду powershell и к сожалению не могу понять как это внедрить в AutoIT и чтобы на выходе получить результаты в текстовый документ(выделено на картинке)....У меня есть нечто похожее. Но этот пока не соображу..

Команда PS:
gwmi WmiMonitorID -Namespace root\wmi |
Select @{n="Model";e={[System.Text.Encoding]::ASCII.GetString($_.UserFriendlyName -ne 00)}},
@{n="Serial Number";e={[System.Text.Encoding]::ASCII.GetString($_.SerialNumberID -ne 00)}} |
Format-List

Почти схожая команда, рабочая.

Код:
Local $ObjService = ObjGet('winmgmts:{impersonationLevel = impersonate}!\\' & @ComputerName & '\root\cimv2')
Local $ObjCDDrive = $ObjService.ExecQuery('SELECT * FROM Win32_CDROMDrive', 'WQL', 0x30)

Func _InfoPC()
       If IsObj($ObjService) Then
          For $ObjItemD In $ObjCDDrive
           $sInfo &= @TAB & 'Дисковод: ............... ' & $ObjItemD.Name & @CRLF
          Next
      Endif
Endfunc
 

Вложения

  • Мониторы.jpg
    Мониторы.jpg
    65.9 КБ · Просмотры: 8

Zmy

Знающий
Сообщения
18
Репутация
6
Можно так сделать.

Код:
#RequireAdmin
#NoTrayIcon
Opt("MustDeclareVars",1)
;#include "C:\Model\Archive\Script\MyLibrary.au3"
Func _a()
Local $sls=ObjGet("winmgmts:{impersonationLevel=impersonate," _
&"authenticationLevel=Pkt}!\\"& _
@ComputerName&'\root\wmi'),$lss=$sls.ExecQuery _
('SELECT * FROM WmiMonitorID'), _
$lss,$sss="",$lsl,$lll,$sll
For $z In $lss
$lsl=$z.UserFriendlyName
For $i=0 To Ubound($lsl)-1
if ($lsl[$i]) Then $lll&=Chr($lsl[$i])
Next
$lsl=$z.SerialNumberID
For $i=0 To Ubound($lsl)-1
if ($lsl[$i]) Then $sll&=Chr($lsl[$i])
Next
$sss&="Model"&@TAB&@TAB&":  "&$lll&@CR&"Serial Number"&@TAB&":  "&$sll&@CR&@CR
Next
MsgBox(262144,'Monitors   '&$lss.Count,$sss&" "&@CR)
$lss=Null
$sls=Null
EndFunc
_a()
 

Zmy

Знающий
Сообщения
18
Репутация
6
Тогда вот так.

Код:
#RequireAdmin
#NoTrayIcon
Opt("MustDeclareVars",1)
;#include "C:\Model\Archive\Script\MyLibrary.au3"
Func _a()
Local $sls=ObjGet("winmgmts:{impersonationLevel=impersonate," _
&"authenticationLevel=Pkt}!\\"& _
@ComputerName&'\root\wmi'),$lss=$sls.ExecQuery _
('SELECT * FROM WmiMonitorID'), _
$lll,$sll,$sss="",$lsl,$lls,$i,$z
For $z In $lss
$lsl=$z.UserFriendlyName
For $i=0 To Ubound($lsl)-1
if ($lsl[$i]) Then $lll&=Chr($lsl[$i])
Next
$lls=$z.SerialNumberID
For $i=0 To Ubound($lls)-1
if ($lls[$i]) Then $sll&=Chr($lls[$i])
Next
$sss&="Model"&@TAB&@TAB&":   "&$lll&@CR&"Serial Number"&@TAB&":   "&$sll&@CR&@CR
$lll=""
$sll=""
Next
MsgBox(262144,'Monitors   '&$lss.Count,$sss&" "&@CR)
$lss=Null
$sls=Null
EndFunc
_a()
 
Последнее редактирование:
Автор
DirtyJohny

DirtyJohny

Новичок
Сообщения
46
Репутация
0
Тогда вот так.

Код:
#RequireAdmin
#NoTrayIcon
Opt("MustDeclareVars",1)
;#include "C:\Model\Archive\Script\MyLibrary.au3"
Func _a()
Local $sls=ObjGet("winmgmts:{impersonationLevel=impersonate," _
&"authenticationLevel=Pkt}!\\"& _
@ComputerName&'\root\wmi'),$lss=$sls.ExecQuery _
('SELECT * FROM WmiMonitorID'), _
$lll,$sll,$sss="",$lsl,$lls,$i,$z
For $z In $lss
$lsl=$z.UserFriendlyName
For $i=0 To Ubound($lsl)-1
if ($lsl[$i]) Then $lll&=Chr($lsl[$i])
Next
$lls=$z.SerialNumberID
For $i=0 To Ubound($lls)-1
if ($lls[$i]) Then $sll&=Chr($lls[$i])
Next
$sss&="Model"&@TAB&@TAB&":   "&$lll&@CR&"Serial Number"&@TAB&":   "&$sll&@CR&@CR
$lll=""
$sll=""
Next
MsgBox(262144,'Monitors   '&$lss.Count,$sss&" "&@CR)
$lss=Null
$sls=Null
EndFunc
_a()
Извини, но случайно не сможешь привести все это в вид как у меня написано?
Код:
Func _InfoPC()
    Local $ObjService = ObjGet('winmgmts:{impersonationLevel = impersonate}!\\' & @ComputerName & '\root\cimv2')
    Local $ObjMB = $ObjService.ExecQuery('SELECT * FROM Win32_BaseBoard', 'WQL', 0x30)
     If IsObj($ObjService) Then
       For $objItemMB In $ObjMB
            $sInfo &= @TAB & 'Motherboard: ...... ' & $objItemMB.Product & @CRLF
 
Верх