yannosch
Goto Top

VBS Betriebsystem ermitteln

Guten Tag :p ,

ist es möglich mit VBS das Betriebsystem zu ermitteln ?
in meinem Fall müsste der betreffende PC nur zwischen xp und windows7 unterschieden werden.

Sofern es möglich sein sollte, wäre es sehr nett, wenn ihr es mir erklärt :p ...

Liebe Grüße

YANNOSCH!

Content-Key: 197170

Url: https://administrator.de/contentid/197170

Printed on: April 19, 2024 at 08:04 o'clock

Member: vossbaer
vossbaer Jan 17, 2013 at 13:13:25 (UTC)
Goto Top
Es müsste möglich sein es per Befehl aus der Registry auszulesen

OS --> Variable
OS = WshShell.RegRead("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProductName")

Dann müsstest Du OS einfach weiter verarbeiten können.
Member: mayho33
mayho33 Jan 17, 2013 at 13:21:30 (UTC)
Goto Top
Hi!

Via WMI hier alle Properties die Win32_OperatingSystem zurück gibt. Für dich wäre "Version" gefragt. 5.1 = XP, 6.1=W7.
mit
wscript.echo left(objItem.Version, 3)
bekommst du bei XP "5.1" zurück...


'Code:
'===================================================================================
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_OperatingSystem",,48)

Dim objItem 'as Win32_OperatingSystem
For Each objItem in colItems
WScript.Echo "BootDevice: " & objItem.BootDevice
WScript.Echo "BuildNumber: " & objItem.BuildNumber
WScript.Echo "BuildType: " & objItem.BuildType
WScript.Echo "Caption: " & objItem.Caption
WScript.Echo "CodeSet: " & objItem.CodeSet
WScript.Echo "CountryCode: " & objItem.CountryCode
WScript.Echo "CreationClassName: " & objItem.CreationClassName
WScript.Echo "CSCreationClassName: " & objItem.CSCreationClassName
WScript.Echo "CSDVersion: " & objItem.CSDVersion
WScript.Echo "CSName: " & objItem.CSName
WScript.Echo "CurrentTimeZone: " & objItem.CurrentTimeZone
WScript.Echo "DataExecutionPrevention_32BitApplications: " & objItem.DataExecutionPrevention_32BitApplications
WScript.Echo "DataExecutionPrevention_Available: " & objItem.DataExecutionPrevention_Available
WScript.Echo "DataExecutionPrevention_Drivers: " & objItem.DataExecutionPrevention_Drivers
WScript.Echo "DataExecutionPrevention_SupportPolicy: " & objItem.DataExecutionPrevention_SupportPolicy
WScript.Echo "Debug: " & objItem.Debug
WScript.Echo "Description: " & objItem.Description
WScript.Echo "Distributed: " & objItem.Distributed
WScript.Echo "EncryptionLevel: " & objItem.EncryptionLevel
WScript.Echo "ForegroundApplicationBoost: " & objItem.ForegroundApplicationBoost
WScript.Echo "FreePhysicalMemory: " & objItem.FreePhysicalMemory
WScript.Echo "FreeSpaceInPagingFiles: " & objItem.FreeSpaceInPagingFiles
WScript.Echo "FreeVirtualMemory: " & objItem.FreeVirtualMemory
WScript.Echo "InstallDate: " & objItem.InstallDate
WScript.Echo "LargeSystemCache: " & objItem.LargeSystemCache
WScript.Echo "LastBootUpTime: " & objItem.LastBootUpTime
WScript.Echo "LocalDateTime: " & objItem.LocalDateTime
WScript.Echo "Locale: " & objItem.Locale
WScript.Echo "Manufacturer: " & objItem.Manufacturer
WScript.Echo "MaxNumberOfProcesses: " & objItem.MaxNumberOfProcesses
WScript.Echo "MaxProcessMemorySize: " & objItem.MaxProcessMemorySize
WScript.Echo "MUILanguages: " & objItem.MUILanguages
WScript.Echo "Name: " & objItem.Name
WScript.Echo "NumberOfLicensedUsers: " & objItem.NumberOfLicensedUsers
WScript.Echo "NumberOfProcesses: " & objItem.NumberOfProcesses
WScript.Echo "NumberOfUsers: " & objItem.NumberOfUsers
WScript.Echo "OperatingSystemSKU: " & objItem.OperatingSystemSKU
WScript.Echo "Organization: " & objItem.Organization
WScript.Echo "OSArchitecture: " & objItem.OSArchitecture
WScript.Echo "OSLanguage: " & objItem.OSLanguage
WScript.Echo "OSProductSuite: " & objItem.OSProductSuite
WScript.Echo "OSType: " & objItem.OSType
WScript.Echo "OtherTypeDescription: " & objItem.OtherTypeDescription
WScript.Echo "PAEEnabled: " & objItem.PAEEnabled
WScript.Echo "PlusProductID: " & objItem.PlusProductID
WScript.Echo "PlusVersionNumber: " & objItem.PlusVersionNumber
WScript.Echo "Primary: " & objItem.Primary
WScript.Echo "ProductType: " & objItem.ProductType
WScript.Echo "RegisteredUser: " & objItem.RegisteredUser
WScript.Echo "SerialNumber: " & objItem.SerialNumber
WScript.Echo "ServicePackMajorVersion: " & objItem.ServicePackMajorVersion
WScript.Echo "ServicePackMinorVersion: " & objItem.ServicePackMinorVersion
WScript.Echo "SizeStoredInPagingFiles: " & objItem.SizeStoredInPagingFiles
WScript.Echo "Status: " & objItem.Status
WScript.Echo "SuiteMask: " & objItem.SuiteMask
WScript.Echo "SystemDevice: " & objItem.SystemDevice
WScript.Echo "SystemDirectory: " & objItem.SystemDirectory
WScript.Echo "SystemDrive: " & objItem.SystemDrive
WScript.Echo "TotalSwapSpaceSize: " & objItem.TotalSwapSpaceSize
WScript.Echo "TotalVirtualMemorySize: " & objItem.TotalVirtualMemorySize
WScript.Echo "TotalVisibleMemorySize: " & objItem.TotalVisibleMemorySize
WScript.Echo "Version: " & objItem.Version
WScript.Echo "WindowsDirectory: " & objItem.WindowsDirectory
WScript.Echo ""
Next
Member: Yannosch
Yannosch Jan 21, 2013 at 07:43:26 (UTC)
Goto Top
Vielen Dank für die schnelle Antwort!

@mayho33:

Dein Vorschlag ist ersichtlich, allerding schaffe ich es nicht den Rückgabewert (sprich 5.1 oder 6.1) in einer Variable festzuhalten.
Wie wäre da dein Lösungsvorschlag?
Also dass ich quasie in die Variable "OS", 7 für Win7 und x für XP speichern kann
Member: mayho33
mayho33 Jan 21, 2013 updated at 09:44:19 (UTC)
Goto Top
Hi!

Hier mal der Code die Version betreffend. Die Ausgabe brauchst du nicht unbedingt. Komt darauf an was du machen willst
Grundsätzlich wäre es aber nicht so schwer den Rückgabewert aus dem entsprechenden Property in eine Variable zu speichern
Direkt kannst du ein Objekt natürlich nicht in einer Variable speichern. Außer die Variable ist ein Objekt. Was aber Nonsens wäre:

'CODE==================================================================
'
'Variablen setzen und initialisieren
Dim objShell: Set objShell = WScript.CreateObject("wscript.shell")
Dim objFso: Set objFso = WScript.CreateObject("scripting.filesystemobject")
Dim CDir: CDir = objFso.GetParentFolderName(WScript.ScriptFullName)
Dim Value

'WMI abfragen. Die Abfrage liefert eine Collection in einem Object
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_OperatingSystem",,48)

Dim objItem
For Each objItem in colItems
'Variable füllen. Die ersten 3 Charakter sind wichtig. die gesamte Ausgabe wäre etwa so: 7.1.xxxx.xx
'Left sagt: von links die ersten 3 auslesen ==> Variable Value
Value = Left(objItem.Version, 3)
Next

select Case Value
Case "6.2"
WScript.Echo "Version = W8 oder Server 2012"
Case "6.1"
WScript.Echo "Version = W7 oder Server 2008 R2"
Case "6.0"
WScript.Echo "Version = Vista oder Server 2008"
Case "5.2"
WScript.Echo "Version = XP-64Bit oder Server 2003 (R2)"
Case "5.1"
WScript.Echo "Version = XP"
Case "5.0"
WScript.Echo "Version = 2000"
Case Else
WScript.Echo "Älter als Windows 2000"
End select
Member: Yannosch
Yannosch Jan 21, 2013 at 09:45:46 (UTC)
Goto Top
Richtig verständlich und vor allem auch funktionierend! Vielen Dank ! Bin jetzt erstmal ein bisschen beschäftigt.

Nochmals Danke face-smile