[решено] Скрипт для проверки версии ОС

Ответить
 • Просмотры: 1
Аватара пользователя
HFShak

[решено] Скрипт для проверки версии ОС

Сообщение HFShak »

Добрый день!



Народ, помогите написать функцию для чтения информации о версии ос из wmi.



Я пробовал написать, но не знаю синтаксиса, у меня выдаются пустые значения...





Код:

Код: Выделить всё

Func _showmeos($PC)
	$oWMI=ObjGet("winmgmts:\\" & $PC & "\root\CIMV2")
	$osinfo=$oWMI.Get("Win32_OperatingSystem")
	ConsoleWrite ("$oWMI = " & $oWMI & @CR & "$oProcessColl = " & $oProcessColl & @CR)
EndFunc
Аватара пользователя
Iska

Re: [решено] Скрипт для проверки версии ОС

Сообщение Iska »

Цитата HFShak:



помогите написать функцию для чтения информации о версии ос из wmi
[решено] Скрипт для проверки версии ОС




Чем не устраивают существующие макросы (@OSVersion, @OSType)?



И куски кода следует заключать в соответствующий тег.
Аватара пользователя
Creat0R

Re: [решено] Скрипт для проверки версии ОС

Сообщение Creat0R »

Цитата Creat0R:



Чем не устраивают существующие макросы (@OSVersion, @OSType)?
[решено] Скрипт для проверки версии ОС




Они разве показывают информацию на удаленной машине?
Аватара пользователя
HFShak

Re: [решено] Скрипт для проверки версии ОС

Сообщение HFShak »

HFShak,



Код:

Код: Выделить всё

; Generated by AutoIt ScriptOMatic
$wbemFlagReturnImmediately = 0x10
$wbemFlagForwardOnly = 0x20
$colItems = ""
$strComputer = "localhost"
$OutputTitle = ""
$Output = ""
$OutputTitle &= "Computer: " & $strComputer & @CRLF
$OutputTitle &= "==========================================" & @CRLF
$objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_OperatingSystem", "WQL", _
        $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
If IsObj($colItems) Then
    Local $Object_Flag = 0
    For $objItem In $colItems
        $Object_Flag = 1
        $Output &= "BootDevice: " & $objItem.BootDevice & @CRLF
        $Output &= "BuildNumber: " & $objItem.BuildNumber & @CRLF
        $Output &= "BuildType: " & $objItem.BuildType & @CRLF
        $Output &= "Caption: " & $objItem.Caption & @CRLF
        $Output &= "CodeSet: " & $objItem.CodeSet & @CRLF
        $Output &= "CountryCode: " & $objItem.CountryCode & @CRLF
        $Output &= "CreationClassName: " & $objItem.CreationClassName & @CRLF
        $Output &= "CSCreationClassName: " & $objItem.CSCreationClassName & @CRLF
        $Output &= "CSDVersion: " & $objItem.CSDVersion & @CRLF
        $Output &= "CSName: " & $objItem.CSName & @CRLF
        $Output &= "CurrentTimeZone: " & $objItem.CurrentTimeZone & @CRLF
        $Output &= "DataExecutionPrevention_32BitApplications: " & $objItem.DataExecutionPrevention_32BitApplications & @CRLF
        $Output &= "DataExecutionPrevention_Available: " & $objItem.DataExecutionPrevention_Available & @CRLF
        $Output &= "DataExecutionPrevention_Drivers: " & $objItem.DataExecutionPrevention_Drivers & @CRLF
        $Output &= "DataExecutionPrevention_SupportPolicy: " & $objItem.DataExecutionPrevention_SupportPolicy & @CRLF
        $Output &= "Debug: " & $objItem.Debug & @CRLF
        $Output &= "Description: " & $objItem.Description & @CRLF
        $Output &= "Distributed: " & $objItem.Distributed & @CRLF
        $Output &= "EncryptionLevel: " & $objItem.EncryptionLevel & @CRLF
        $Output &= "ForegroundApplicationBoost: " & $objItem.ForegroundApplicationBoost & @CRLF
        $Output &= "FreePhysicalMemory: " & $objItem.FreePhysicalMemory & @CRLF
        $Output &= "FreeSpaceInPagingFiles: " & $objItem.FreeSpaceInPagingFiles & @CRLF
        $Output &= "FreeVirtualMemory: " & $objItem.FreeVirtualMemory & @CRLF
        $Output &= "InstallDate: " & WMIDateStringToDate($objItem.InstallDate) & @CRLF
        $Output &= "LargeSystemCache: " & $objItem.LargeSystemCache & @CRLF
        $Output &= "LastBootUpTime: " & WMIDateStringToDate($objItem.LastBootUpTime) & @CRLF
        $Output &= "LocalDateTime: " & WMIDateStringToDate($objItem.LocalDateTime) & @CRLF
        $Output &= "Locale: " & $objItem.Locale & @CRLF
        $Output &= "Manufacturer: " & $objItem.Manufacturer & @CRLF
        $Output &= "MaxNumberOfProcesses: " & $objItem.MaxNumberOfProcesses & @CRLF
        $Output &= "MaxProcessMemorySize: " & $objItem.MaxProcessMemorySize & @CRLF
        $Output &= "Name: " & $objItem.Name & @CRLF
        $Output &= "NumberOfLicensedUsers: " & $objItem.NumberOfLicensedUsers & @CRLF
        $Output &= "NumberOfProcesses: " & $objItem.NumberOfProcesses & @CRLF
        $Output &= "NumberOfUsers: " & $objItem.NumberOfUsers & @CRLF
        $Output &= "Organization: " & $objItem.Organization & @CRLF
        $Output &= "OSLanguage: " & $objItem.OSLanguage & @CRLF
        $Output &= "OSProductSuite: " & $objItem.OSProductSuite & @CRLF
        $Output &= "OSType: " & $objItem.OSType & @CRLF
        $Output &= "OtherTypeDescription: " & $objItem.OtherTypeDescription & @CRLF
        $Output &= "PlusProductID: " & $objItem.PlusProductID & @CRLF
        $Output &= "PlusVersionNumber: " & $objItem.PlusVersionNumber & @CRLF
        $Output &= "Primary: " & $objItem.Primary & @CRLF
        $Output &= "ProductType: " & $objItem.ProductType & @CRLF
        $Output &= "QuantumLength: " & $objItem.QuantumLength & @CRLF
        $Output &= "QuantumType: " & $objItem.QuantumType & @CRLF
        $Output &= "RegisteredUser: " & $objItem.RegisteredUser & @CRLF
        $Output &= "SerialNumber: " & $objItem.SerialNumber & @CRLF
        $Output &= "ServicePackMajorVersion: " & $objItem.ServicePackMajorVersion & @CRLF
        $Output &= "ServicePackMinorVersion: " & $objItem.ServicePackMinorVersion & @CRLF
        $Output &= "SizeStoredInPagingFiles: " & $objItem.SizeStoredInPagingFiles & @CRLF
        $Output &= "Status: " & $objItem.Status & @CRLF
        $Output &= "SuiteMask: " & $objItem.SuiteMask & @CRLF
        $Output &= "SystemDevice: " & $objItem.SystemDevice & @CRLF
        $Output &= "SystemDirectory: " & $objItem.SystemDirectory & @CRLF
        $Output &= "SystemDrive: " & $objItem.SystemDrive & @CRLF
        $Output &= "TotalSwapSpaceSize: " & $objItem.TotalSwapSpaceSize & @CRLF
        $Output &= "TotalVirtualMemorySize: " & $objItem.TotalVirtualMemorySize & @CRLF
        $Output &= "TotalVisibleMemorySize: " & $objItem.TotalVisibleMemorySize & @CRLF
        $Output &= "Version: " & $objItem.Version & @CRLF
        $Output &= "WindowsDirectory: " & $objItem.WindowsDirectory & @CRLF
        If MsgBox(1, "WMI Output", $Output) = 2 Then ExitLoop
        $Output = ""
    Next
    If $Object_Flag = 0 Then MsgBox(1, "WMI Output", $OutputTitle)
Else
    MsgBox(0, "WMI Output", "No WMI Objects Found for class: " & "Win32_OperatingSystem")
EndIf
Func WMIDateStringToDate($dtmDate)
    Return (StringMid($dtmDate, 5, 2) & "/" & _
            StringMid($dtmDate, 7, 2) & "/" & StringLeft($dtmDate, 4) _
             & " " & StringMid($dtmDate, 9, 2) & ":" & StringMid($dtmDate, 11, 2) & ":" & StringMid($dtmDate, 13, 2))
EndFunc   ;==>WMIDateStringToDate

ScriptOmatic.au3
Аватара пользователя
madmasles

Re: [решено] Скрипт для проверки версии ОС

Сообщение madmasles »

Цитата HFShak:



Они разве показывают информацию на удаленной машине?
[решено] Скрипт для проверки версии ОС




А где указано что нужно получать информацию на удалённой машине?
Аватара пользователя
Creat0R

Re: [решено] Скрипт для проверки версии ОС

Сообщение Creat0R »

Спасибо, очень полезный скрипт.

Скажите, а что это за переменные:



$wbemFlagReturnImmediately = 0x10

$wbemFlagForwardOnly = 0x20



И что означает:


Цитата madmasles:



colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_OperatingSystem", "WQL", _

$wbemFlagReturnImmediately + $wbemFlagForwardOnly)
[решено] Скрипт для проверки версии ОС






В частоности, что делает "ExecQuery", что такое "WQL" и почему складываются две переменные?
Аватара пользователя
madmasles

Re: [решено] Скрипт для проверки версии ОС

Сообщение madmasles »

Отличная ссылка. Читаю...



Вот пример:



http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx




Почему в C++ или в vbs запрос выглядет так:

objWbemObjectSet = SWbemServices.ExecQuery( _

ByVal strQuery, _

[ ByVal strQueryLanguage ], _

[ ByVal iFlags ], _

[ ByVal objWbemNamedValueSet ] _

)





А в autoit так :

colItems = $objWMIService.ExecNotificationQuery("SELECT * FROM Win32_OperatingSystem", "WQL", _

$wbemFlagReturnImmediately + $wbemFlagForwardOnly)




Есть где нибудь описание именно для autoit типа:



.ExecQuery ( ...)

.Get ( ... )
Аватара пользователя
HFShak

Re: [решено] Скрипт для проверки версии ОС

Сообщение HFShak »

Отличная ссылка. Читаю...



Вот пример:



http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx




Почему в C++ или в vbs запрос выглядет так:

objWbemObjectSet = SWbemServices.ExecQuery( _

ByVal strQuery, _

[ ByVal strQueryLanguage ], _

[ ByVal iFlags ], _

[ ByVal objWbemNamedValueSet ] _

)





А в autoit так :

colItems = $objWMIService.ExecNotificationQuery("SELECT * FROM Win32_OperatingSystem", "WQL", _

$wbemFlagReturnImmediately + $wbemFlagForwardOnly)




Есть где нибудь описание именно для autoit типа:



.ExecQuery ( ...)

.Get ( ... )
Аватара пользователя
Iska

Re: [решено] Скрипт для проверки версии ОС

Сообщение Iska »

HFShak, что для WSH, что для AutoIt данный запрос абсолютно одинаков.
Ответить

Вернуться в «AutoIt»