kim
Goto Top

VBS Plattform erkennen 32 oder 64 Bit

Hi,

ich suche eine Möglichkeit via VBScript herauszufinden, ob ein Betriebssystem 32 oder 64 Bit hat.

Leider fehlt mir gerade die zündende Idee und beim Googeln hab ich auch nichts brauchbares gefunden face-sad

Hat mir jemand den passenden Denkanstoß?

Danke im Vorraus.

Gruß
Kim

Content-ID: 116106

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

Ausgedruckt am: 25.11.2024 um 17:11 Uhr

77559
77559 14.05.2009 um 19:32:05 Uhr
Goto Top
Hallo Kim,

eine lästige Begleiterscheinung ist das Vorhandensein (und die Notwendigkeit) zusätzlicher Environment Variablen "ProgramX"

Siehe :
C:\>set Prog
ProgramData=C:\ProgramData
ProgramFiles=C:\Program Files
ProgramFiles(x86)=C:\Program Files (x86)
ProgramW6432=C:\Program Files

Gruß
LotPings

Edit: Ergänze hier ein WMI-Script erzeugt mit Scriptomatic

' This script was created by: Scriptomatic V2 and LotPings  
'          <http://www.microsoft.com/technet/scriptcenter/tools/scripto2.mspx>  
'   
On Error Resume Next
Const wbemFlagReturnImmediately = &h10
Const wbemFlagForwardOnly = &h20
arrComputers = Array(".")  
For Each strComputer In arrComputers
  WScript.Echo "=============================================================="  
  WScript.Echo "Computer. . . . . . . . . . . : " & strComputer  
  WScript.Echo "=============================================================="  
  Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")  
  Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_OperatingSystem", _  
  "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly)  

  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 . . . . . . . . . : " & WMIDateStringToDate(objItem.InstallDate)  
    WScript.Echo "LargeSystemCache. . . . . . . : " & objItem.LargeSystemCache  
    WScript.Echo "LastBootUpTime. . . . . . . . : " & WMIDateStringToDate(objItem.LastBootUpTime)  
    WScript.Echo "LocalDateTime . . . . . . . . : " & WMIDateStringToDate(objItem.LocalDateTime)  
    WScript.Echo "Locale. . . . . . . . . . . . : " & objItem.Locale  
    WScript.Echo "Manufacturer. . . . . . . . . : " & objItem.Manufacturer  
    WScript.Echo "MaxNumberOfProcesses. . . . . : " & objItem.MaxNumberOfProcesses  
    WScript.Echo "MaxProcessMemorySize. . . . . : " & objItem.MaxProcessMemorySize  
    strMUILanguages = Join(objItem.MUILanguages, ",")  
    WScript.Echo "MUILanguages. . . . . . . . . : " & strMUILanguages  
    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
Next


Function WMIDateStringToDate(dtmDate)
  WMIDateStringToDate = CDate(Mid(dtmDate, 5, 2) & "/" & _  
  Mid(dtmDate, 7, 2) & "/" & Left(dtmDate, 4) _  
  & " " & Mid (dtmDate, 9, 2) & ":" & Mid(dtmDate, 11, 2) & ":" & Mid(dtmDate,13, 2))  
End Function


Dabei liefert hier auf einem Windows 7 RC 64bit
OSArchitecture. . . . . . . . : 64-Bit
76109
76109 14.05.2009 um 20:01:58 Uhr
Goto Top
Hallo LotPings,

Wow, gute Arbeit. Dankeface-smile

Gruß Dieter
77559
77559 14.05.2009 um 20:26:22 Uhr
Goto Top
Zitat von @76109:
Hallo LotPings,

Wow, gute Arbeit. Dankeface-smile

Die meiste Arbeit leistet ja die Scriptomatic face-smile

Wobei ich gerade nochmal nachgesehen habe, die Scriptomatic ist ja auch nur ein .hta Datei und meine habe ich getuned,
mit FixedWidth Schriftart und IMO übersichtlicherer Darstellung der Ausgabe und zusätzlichem Copy Button um das generierte Script direkt in die Zwischenablage zu befördern.
Bei Interesse kann ich mein Änderungen veröffentlichen aber wegen MS Copytight weiß ich nicht, ob ich das einfach hochladen kann oder ein Diff machen muß ( weiss auch noch nicht wie das geht)

Gruß
LotPings
77559
77559 14.05.2009 um 20:46:25 Uhr
Goto Top
Noch ein Hinweis zum WMI Script.

Die Ausgabe auf dem eigenen Rechner kann sich je nach OS und Version
sowohl in der Anzahl der Eigenschaften als auch in den Werten unterscheiden.
(wobei das Gott sei Dank selten der Fall ist.)

Gruß
LotPings
76109
76109 14.05.2009 um 22:56:16 Uhr
Goto Top
Hallo LotPings,

Zitat von @77559:
wegen MS Copytight weiß ich nicht, ob ich das einfach hochladen
kann oder ein Diff machen muß ( weiss auch noch nicht wie das

ich würde das Script in keinem Fall hochzuladen. Für den Download von Scriptomat wird GenuiCheck verlangt...

Dumme Frage? Was meinst Du mit 'Diff'?

Gruß Dieter

PS. HTA kam mir auch in den Sinn
76109
76109 14.05.2009 um 23:05:38 Uhr
Goto Top
Hallo LotPings

Zitat von @77559:
Noch ein Hinweis zum WMI Script.
sowohl in der Anzahl der Eigenschaften als auch in den Werten unterscheiden.
bedeutet das, dass in diesem Fall mit Fehlermeldungen zu rechnen ist?

Gruß Dieter

PS. Achso Text-Diffface-smile
77559
77559 14.05.2009 um 23:05:46 Uhr
Goto Top
Zitat von @76109:
Dumme Frage? Was meinst Du mit 'Diff'?

http://de.wikipedia.org/wiki/Diff

Gruß
LotPings
77559
77559 14.05.2009 um 23:24:07 Uhr
Goto Top
Zitat von @76109:
bedeutet das, dass in diesem Fall mit Fehlermeldungen zu rechnen ist?

Ja, aber eben nur wenn die jeweilge WMI Version das nicht unterstützt.
Das Script läuft zwar wegen
On Error Resume Next
durch, aber der Wert fehlt dann eben - und wenn du genau den haben wolltest ....

Neulich hatte ich doch einen Unterschied bei der WMI Abfrage Win32_DiskDrive
Das Property MediaType liefert bis XP als Wert
Fixed[Tab]Hard Disk Media
Ab Vista ist dieser "Schreibfehler" geändert und es kommt
Fixed Hard Disk Media also mit Leerzeichen.
Wenn man im Script auf diese Inhalte abfragt hat man ein Problem.
Es zeigt halt das auch WMI nicht statisch ist, sondern Änderungen unterliegt.

Gruß
LotPings
76109
76109 15.05.2009 um 00:43:44 Uhr
Goto Top
Hallo LotPings,

Zitat von @77559:
On Error Resume Next
der Wert fehlt dann eben - und wenn du genau den haben wolltest
Fixed[Tab]Hard Disk Media Fixed Hard Disk Media
ja, wenn ein Wert fehlt (Pech gehabt), dann gibt man eben alternativ den Wert "N/V" aus. Ist besser als Leerface-smile
und wenn Fehler wie z.B. [Tab] auftreten können, kann man ja Replace mit einbauen...

So, Gruß und Gute Nachtface-smile

Dieter
Kim
Kim 15.05.2009 um 11:17:29 Uhr
Goto Top
Hatte gehofft, es gäbe wie bei Windows 7 eine Möglichkeit das ganze ohne "Bastlerei" rauszufinden, aber dein Tipp hat mir echt weitergeholfen.

Vielen Dank.

Gruß
Kim