Detre
Новичок
- Сообщения
- 70
- Репутация
- 0
Доброго времени суток, хотел бы как поделиться скриптом(Помогали всем двором собирать на этом форуме ), так и с просьбой добавить новую фишку. Прикрутить отчет о подключенных принтерах как в команде PS
Исходник:
Get-Printer | Format-List Name, PortName
(Пытался аналогчно как с ОЗУ и мониторами, не получается....Решил снова обратиться к профессионалам). Заранее сердечно благодарю)Исходник:
Код:
#RequireAdmin
#NoTrayIcon
#include <GUIConstantsEx.au3>
#include <EditConstants.au3>
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <WindowsConstants.au3>
#include <Constants.au3>
#include <Array.au3>
#include <MsgBoxConstants.au3>
Opt("MustDeclareVars",1)
;Все что написано, посде ';' явлется комментарием и ни как не влияет на работу скрипта.
Global $idComboBox ;объявляем переменные, которые будут использоваться в цикле
Global $hFile, $sInfo,$idComboBox ,$CopyBtn , $sComboRead, $fFile = @ScriptDir & "\" & "(" & @ComputerName & ")" & ".txt"
$hFile = FileOpen(@ScriptDir & "\" & "(" & @ComputerName & ")" & ".txt", 1)
$sInfo &= _InfoPC()
$sInfo &= _InfoRAM()
FileWrite($hFile, $sInfo)
FileClose($hFile)
Func _InfoPC()
Local $ObjService = ObjGet('winmgmts:{impersonationLevel = impersonate}!\\' & @ComputerName & '\root\cimv2')
Local $ObjMB = $ObjService.ExecQuery('SELECT * FROM Win32_BaseBoard', 'WQL', 0x30)
Local $ObjProcessor = $ObjService.ExecQuery('SELECT * FROM Win32_Processor', 'WQL', 0x30)
Local $ObjMemory = $ObjService.ExecQuery('SELECT * FROM Win32_PhysicalMemory')
Local $ObjNet = $ObjService.ExecQuery('SELECT * FROM Win32_NetworkAdapter', 'WQL', 0x30)
Local $ObjGraph = $ObjService.ExecQuery('SELECT * FROM Win32_VideoController', 'WQL', 0x30)
Local $ObjDrive = $ObjService.ExecQuery('SELECT * FROM Win32_DiskDrive', 'WQL', 0x30)
Local $ObjCDDrive = $ObjService.ExecQuery('SELECT * FROM Win32_CDROMDrive', 'WQL', 0x30)
Local $ObjRam = $ObjService.ExecQuery('SELECT * FROM Win32_ComputerSystem')
Local $ObjModel = $ObjService.ExecQuery('SELECT * FROM Win32_ComputerSystem')
Local $ObjBIOS = $ObjService.ExecQuery('SELECT * FROM Win32_BIOS')
Local $sNameComput = RegRead('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\DataStore\Machine\0', 'szTargetName')
Local $sProduct = RegRead('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion', 'ProductName')
Local $sVersion = RegRead('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion', 'DisplayVersion')
Local $sBuild = RegRead('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion', 'ReleaseId')
Local $sItemM, $sItemMa, $sInfo = ''& @CRLF & '[КОНФИГУРАЦИЯ:] (' & @MDAY & "." & @MON & "." & @YEAR & ' - ' & @HOUR & ":" & @MIN & ":" & @SEC & ')' & @CRLF & @TAB & 'Имя компьютера............' & @ComputerName & @CRLF & @TAB &'Операционная система: ... ' & $sProduct & ' ' & $sVersion & ' ' & $sBuild & ' ' & '(' & @OSArch & ')' & @CRLF
If IsObj($ObjService) Then
For $objItemP In $ObjProcessor
$sInfo &= @TAB & 'Процессор: .............. ' & $objItemP.Name & @CRLF
Next
For $objItemMB In $ObjMB
$sInfo &= @TAB & 'Материнская плата: ...... ' & $objItemMB.Product & @CRLF
Next
For $ObjItemM In $ObjMemory
$sItemM = $objItemM.Speed
$sItemMa = $objItemM.Manufacturer
Next
For $objItemR In $ObjRam
$sInfo &= @TAB & 'RAM: .................... ' & Round($objItemR.TotalPhysicalMemory / 1024 / 1024 ^ 2, 0) & ' GB | ' & $ObjMemory.Count & ' слот | ' & $sItemM & ' Mhz' & @CRLF
Next
For $ObjItemG In $ObjGraph
$sInfo &= @TAB & 'Видеокарта: ............. ' & $ObjItemG.Name & ' | RAM: ' & $ObjItemG.AdapterRAM / 1024 ^ 2 & ' Mb' & @CRLF
Next
For $ObjItemD In $ObjDrive
$sInfo &= @TAB & 'Жесткие диск: ........... ' & $ObjItemD.Model & ' | Объем: ' & Round($ObjItemD.Size / 1024 / 1024 / 1024) & ' Gb | S\N:' & $ObjItemD.SerialNumber & '' & @CRLF
Next
For $ObjItemCD In $ObjCDDrive
$sInfo &= @TAB & 'Дисковод: ............... ' & $ObjItemCD.Name & @CRLF
Next
For $ObjItemN In $ObjNet
If $ObjItemN.PhysicalAdapter = True Then
$sInfo &= @TAB & 'Сетевой адаптер: ........ ' & $ObjItemN.Name & @CRLF
EndIf
Next
For $i = 0 to (ubound($ObjRam)/2)-1
$sInfo &= @TAB & "1: ........ " & $i+1 & ": 1: " & $ObjRam[(2*$i)] & @CRLF
$sInfo &= @TAB & "1: ........ " & $i+1 & ": 1: " & $ObjRam[(2*$i)+1] & @CRLF
Next
For $ObjItemModel In $ObjModel
$sInfo &= @CRLF &'[Модель и серийный номер устройства:]' & @CRLF
$sInfo &= @TAB & 'Модель: ............... ' & $ObjItemModel.Model & @CRLF
Next
For $ObjItemBIOS In $ObjBIOS
$sInfo &= @TAB & 'Серийный номер: ............... ' & $ObjItemBIOS.SerialNumber & @CRLF
$sInfo &= @CRLF &'[Мониторы:]' & @CRLF
Next
EndIf
Local $aDisplayInfo = Display_Info()
if $aDisplayInfo = "" then
ConsoleWrite("$aDisplayInfo is not an array" & @crlf)
Else
for $i = 0 to (ubound($aDisplayInfo)/2)-1
$sInfo &= @TAB & "Монитор: ........ " & $i+1 & ": Модель: " & $aDisplayInfo[(2*$i)] & " |" & " Серийный номер: " & $aDisplayInfo[(2*$i)+1] & @CRLF
Next
EndIf
$sInfo &= @CRLF
Return $sInfo
EndFunc ;==>_InfoPC
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&="Модель"&@TAB&@TAB&": "&$lll&@CR&"Серийный номер"&@TAB&": "&$sll&@CR&@CR
$lll=""
$sll=""
Next
$lss=Null
$sls=Null
$sInfo &= @CRLF
EndFunc
Func _InfoRAM()
Local $objWMIService = ObjGet('winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2')
If Not IsObj($objWMIService) Then Return "Ошибка получения информации RAM" & @CRLF
Local $colItems = $objWMIService.ExecQuery('Select * From Win32_PhysicalMemory')
Local $i = 0, $infoRAM = "[ОЗУ:]" & @CRLF
For $ObjItem In $colItems
$i += 1
$infoRAM &= @TAB & "Слот " & $i & ": " & $objItem.DeviceLocator & "|" & "Объём: " & $ObjItem.Capacity / 1024^3 & " GB" & "|" & "Марка: " & $objItem.Manufacturer & "|" & "Частота: " & $objItem.Speed & "|" & "S/N: " & $objItem.PartNumber & @CRLF
Next
Return $infoRAM
EndFunc
Func Display_Info()
Local $oComErr, $oWmi, $oInstances
$oComErr = ObjEvent("AutoIt.Error", comm_error_handler)
#forceref $oComErr
;Get WMI object
$oWmi = ObjGet("winmgmts:\root\WMI")
If Not IsObj($oWmi) Then Exit MsgBox($MB_ICONERROR, "ERROR", "Unable to create WMI object")
;Select object instances
$oInstances = $oWmi.ExecQuery("SELECT * FROM WMIMonitorID")
If $oInstances.Count = 0 Then Exit MsgBox($MB_ICONWARNING,"Warning","No objects found")
; Changed part
Local $aReturn[2] ; change number if you want to return more info
Local $iDisplayCount = 1
;Display instance properties
For $oInstance in $oInstances
With $oInstance
ConsoleWrite(@CRLF)
if ubound($aReturn) < $iDisplayCount * 2 then redim $aReturn[2*$iDisplayCount]
If IsArray(.UserFriendlyName) Then $aReturn[2*($iDisplayCount-1)] = convert_uint16_array_to_string(.UserFriendlyName) ;StringFormat("UserFriendlyName = %s", convert_uint16_array_to_string(.UserFriendlyName))
If IsArray(.SerialNumberId) Then $aReturn[2*($iDisplayCount-1)+1] = convert_uint16_array_to_string(.SerialNumberId) ;StringFormat("SerialNumberId = %s", convert_uint16_array_to_string(.SerialNumberId))
$iDisplayCount += 1
EndWith
Next
Return $aReturn
EndFunc
Func convert_uint16_array_to_string($aBytes)
Local $s = ""
For $i in $aBytes
If $i <> 0 Then $s &= Chr($i)
Next
Return $s
EndFunc
Func comm_error_handler($oComError)
ConsoleWrite(@CRLF)
ConsoleWrite(StringFormat("Script Line = %s", $oComError.ScriptLine) & @CRLF)
ConsoleWrite(StringFormat("Win Err Desc = %s", StringStripWS($oComError.WinDescription, $STR_STRIPTRAILING)) & @CRLF)
ConsoleWrite(StringFormat("Error Number = %i (0x%x)", $oComError.Number, $oComError.Number) & @CRLF)
ConsoleWrite(StringFormat("Error Desc = %s", $oComError.Description) & @CRLF)
Exit
EndFunc