Getosversion.vbs - Betriebssystem sowie die Versionsnummer per Script bestimmen
In mehreren Beiträgen ist die Frage aufgetreten, wie man das installierte BS von Rechnern innerhalb eines Netzwerkes bestimmen kann, ohne erst den Rechner zu Fuß aufsuchen zu müssen. Folgend ein kleines VBS, das die gewünschte Infos ausgibt und noch sehr ausbaufähig ist!!!!!!!!!!!!!!!!!!
Leider muß ich anprangern, das es hier kein Script-Bereich mit VBS und WS-Script gibt, denn das sind durchaus gängige Werkzeuge für Admins.
Egal!
Mein Kollege Biber wird ein Batchfile nachziehen, das die gleichen Aufgabe löst!
Mfg
schuladmin
http://www.73s.de
Leider muß ich anprangern, das es hier kein Script-Bereich mit VBS und WS-Script gibt, denn das sind durchaus gängige Werkzeuge für Admins.
Egal!
Mein Kollege Biber wird ein Batchfile nachziehen, das die gleichen Aufgabe löst!
Mfg
schuladmin
http://www.73s.de
'v1.0********************************************************************
' File: GetOSVersion.vbs
' Autor: schuladmin
' verwendet: WMI
' Plattformen: Win98/WinNT/ -> Voraussetzung WMI installiert
' 2k/XP
' Indentifiziert das installierte Betriebssystem sowie die Versionsnummer
'************************************************************************
Titel=" GETOSVERSION"
Eingabe = InputBox("Geben Sie die IP oder den Namen des Rechners ein !",Titel)
If Eingabe="" then MsgBox" . . . dann halt nicht!",,WScript.ScriptName
If Eingabe="" then WScript.Quit
strComputer = Eingabe 'Name oder IP eingeben
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colOperatingSystems = objWMIService.ExecQuery _
("Select * from Win32_OperatingSystem")
For Each objOperatingSystem in colOperatingSystems
Wscript.Echo objOperatingSystem.Caption & " " & _
objOperatingSystem.Version
Next
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 15664
Url: https://administrator.de/contentid/15664
Ausgedruckt am: 19.11.2024 um 01:11 Uhr
4 Kommentare
Neuester Kommentar
Okay,
wie angekündigt, nun die Variante mit Bordmitteln.
Ergänzt sich ganz gut, denn die Batch/CMD-Variante ist hauptsächlich für einen Zweck gedacht: die aktive Betriebssystemversion des Clients - zum Beispiel im Login-Script- zu checken.
Und der Client hat ja im ungünstigsten Fall weder WMI noch *.vbs noch RegEdit.exe erlaubt.
Also dann, behelfsmäßig drei Strategien skizziert:
Erste Variante: Über "Ver" und "find.exe" oder "findstr.exe". Strategie: "Ver"-Output scannen und in eine Variable schreiben.
Führt zu GetOsversionClassic.bat
GetOsVersionClassic.bat ... wurde schon mal skizziert unter Betriebssystem bestimmen
Variante zwei... wenn ich es gar nicht so genau wissen will, sondern nur in einem Batch sicherstellen will, dass der Client zu einem von mir unterstützten Betriebssysten gehört, dann
Dritte Variante, etwas moderner:
Weitere Verfeinerungen sind natürlich möglich, wenn Reg.exe oder RegEdit.exe auf den Clients verfügbar sind. dann kann ich auch ohne Verrenkungen feststellen, ob es sich um einen NT4-Server handelt oder welche Servicepacks installiert sind.
Liebe Grüße, besonders an Schuladmin
Frank / der Biber aus Bremen
[Edit 10.4.2007] In Ansätzen eine Prüfung für das inzwischen kursierende "Vista" skizziert[/Edit]
wie angekündigt, nun die Variante mit Bordmitteln.
Ergänzt sich ganz gut, denn die Batch/CMD-Variante ist hauptsächlich für einen Zweck gedacht: die aktive Betriebssystemversion des Clients - zum Beispiel im Login-Script- zu checken.
Und der Client hat ja im ungünstigsten Fall weder WMI noch *.vbs noch RegEdit.exe erlaubt.
Also dann, behelfsmäßig drei Strategien skizziert:
Erste Variante: Über "Ver" und "find.exe" oder "findstr.exe". Strategie: "Ver"-Output scannen und in eine Variable schreiben.
>ver
Microsoft Windows XP [Version 5.1.2600]
GetOsVersionClassic.bat ... wurde schon mal skizziert unter Betriebssystem bestimmen
@echo off
SET OSVERSION=
::-- Test auf W98 oder älter
if "%OS%"=="" goto Win9x
set tmpDatei=%TEMP%\version.txt
ver >%tmpdatei%
findstr /i 2000 %tmpdatei% >nul
if ERRORLEVEL 1 goto test2k3
set OSVERSION=2000
goto weiter
:test2k3
find /i "Microsoft Windows [Version 5" %tmpdatei%> nul
set OSVERSION=2003
goto weiter
:testxp
findstr /i XP %tmpdatei% >nul || goto testvista
set OSVERSION=XP
goto weiter
:testvista
findstr /i "Microsoft Windows [Version 6" %tmpdatei%> nul || goto testNT4
Set OSVERSION=Vista
goto weiter
:testnt4
findstr /i "4.0" %tmpdatei% >nul
if ERRORLEVEL 1 goto weiter
set OSVERSION=NT4
goto weiter
:Win9x
set OSVERSION=Win9x
:weiter
ECHO Betriebssystem ist "%OSVERSION%" gesetzt in der Variablen %%OSVERSION%%. Werte sind "Win9x", "2000", "2003", "XP", "NT4", "Vista"
Variante zwei... wenn ich es gar nicht so genau wissen will, sondern nur in einem Batch sicherstellen will, dass der Client zu einem von mir unterstützten Betriebssysten gehört, dann
-----snipp GetOsVersion1.bat----
@ECHO OFF
IF ;-%OS%(==:-<whatever>( goto Lachnummer
SET OSVERSION=
FOR /f "tokens=1,2,3* delims= " %%i in ('ver') do set OSVERSION=%%i %%j %%k
if "%OSVERSION%" == "Microsoft Windows [Version" (goto done)
if "%OSVERSION%" == "Microsoft Windows 2000" (goto done)
if "%OSVERSION%" == "Windows NT Version" (goto done)
if "%OSVERSION%" == "Microsoft Windows XP" (goto done)
echo Nicht vorgesehene Version: %OSVERSION%
echo Das Betriebssystem ist nicht Windows NT, Windows 2000, XP oder 2003.
exit 0
:Lachnummer
echo Dein Betriebssystem wird nicht in der Lage sein, diesen Batch abzuarbeiten ^(Win9x?^).
exit 1
:done
echo Das Betriebssystem ist [%OSVERSION%]. Steht in der Variablen "%%OSVERSION%%"
...weitere Befehle
:: ------snapp-------
-------snipp-----GetOsversion2.bat------
@ECHO OFF
:: FÜR OS-Versionen: NT4/2000/XP/2003.
:: Parameter: %1 Variablenname für OS-Version
:: Beispiel : GetOsVersion2.bat OSVer
:: ohne Parameter wird OSVERSION gesetzt.
IF [%1]== %0 OSVERSION
SETLOCAL ENABLEEXTENSIONS
IF :-%OS%((==:-(( (echo Sorry, das läuft nicht unter Win9x...) & exit 1
for /f "tokens=1-2 delims=." %%a in ('NET CONFIG WORK^|findstr/b /c:"Soft"') do (
for %%i in (%%a%%b) do set osv=%%i)
endlocal & SET "%1=%osv:40=NT40%" & SET "%1=%osv:2002=XP%" & (goto :EOF)
Liebe Grüße, besonders an Schuladmin
Frank / der Biber aus Bremen
[Edit 10.4.2007] In Ansätzen eine Prüfung für das inzwischen kursierende "Vista" skizziert[/Edit]
Jepp, SMU,
manchmal geht es einfacher als man/frau denkt.
Aber nicht immer.
Der Kern in meinem Kommentar oben lautet ähnlich wie Dein Ansatz:
...
FOR /f "tokens=1,2,3* delims= " %%i in ('ver') do set OSVERSION=%%i %%j %%k
if "%OSVERSION%" == "Microsoft Windows [Version" (goto done)
if "%OSVERSION%" == "Microsoft Windows 2000" (goto done)
if "%OSVERSION%" == "Windows NT Version" (goto done)
if "%OSVERSION%" == "Microsoft Windows XP" (goto done)
echo Nicht vorgesehene Version: %OSVERSION%
Wie vielleicht zu erahnen ist, würden die eckigen Klammern zwar für einige Versionen funktionieren. Allerdings müsstest Du dann tatsächlich das Wissen haben, von der Versionsnummer auf die Aussage "versionsnummer" bedeutet "XP Pro" oder "Win 2003 Server" zu kommen.
Bsp.:
> ver
Microsoft Windows XP [Version 5.1.2600]
--> "Version 5.1.2600" bedeutet "Microsoft Windows XP".
In den Ansätzen oben ging es darum, wenigstens die paar "menschenlesbaren" Strings wiederzufinden, die M$ in der Versionsangabe dagelassen hat.
Grüße
Biber
manchmal geht es einfacher als man/frau denkt.
Aber nicht immer.
Der Kern in meinem Kommentar oben lautet ähnlich wie Dein Ansatz:
...
FOR /f "tokens=1,2,3* delims= " %%i in ('ver') do set OSVERSION=%%i %%j %%k
if "%OSVERSION%" == "Microsoft Windows [Version" (goto done)
if "%OSVERSION%" == "Microsoft Windows 2000" (goto done)
if "%OSVERSION%" == "Windows NT Version" (goto done)
if "%OSVERSION%" == "Microsoft Windows XP" (goto done)
echo Nicht vorgesehene Version: %OSVERSION%
Wie vielleicht zu erahnen ist, würden die eckigen Klammern zwar für einige Versionen funktionieren. Allerdings müsstest Du dann tatsächlich das Wissen haben, von der Versionsnummer auf die Aussage "versionsnummer" bedeutet "XP Pro" oder "Win 2003 Server" zu kommen.
Bsp.:
> ver
Microsoft Windows XP [Version 5.1.2600]
--> "Version 5.1.2600" bedeutet "Microsoft Windows XP".
In den Ansätzen oben ging es darum, wenigstens die paar "menschenlesbaren" Strings wiederzufinden, die M$ in der Versionsangabe dagelassen hat.
Grüße
Biber
...tja
Vor dem Erfolg haben eben die Götter den Schweiß gesetzt.
Ich habe da fürher auch mal rumgefummelt.
eider habe ich keine zuverlässige Quelle gefunden die die Zuordnung der Versionnummern bestätigt. Aber irgendwo muss man wohl einen Break machen.
Wir wissen ja nicht wirklich welchen Hintergrund diese Nummern haben.
aber so ist das eben...
SMU
Vor dem Erfolg haben eben die Götter den Schweiß gesetzt.
Ich habe da fürher auch mal rumgefummelt.
eider habe ich keine zuverlässige Quelle gefunden die die Zuordnung der Versionnummern bestätigt. Aber irgendwo muss man wohl einen Break machen.
Wir wissen ja nicht wirklich welchen Hintergrund diese Nummern haben.
aber so ist das eben...
SMU