worker734
Goto Top

Betriebssystem aller Clients im Netzwerk auslesen per Batchfile

In meinem Script prüfe ich per ping die Erreichbarkeit aller Clients im Netzwerk und möchte gleich das installierte Betriebssystem mit auslesen.

Danke und Gruß

Content-Key: 19041

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

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

Member: Janni
Janni Nov 04, 2005 at 15:19:19 (UTC)
Goto Top
hatten wir hier schon einmal ...................

schau mal unter: W2K und XP Service Pack Versionen im Netzwerk auslesen , bzw. direkt unter: http://www.loginter.net/de/loginventory.php
Member: ederw
ederw Nov 04, 2005 at 15:31:47 (UTC)
Goto Top
Hallo,

hab vor kurzem ein Tool zur Inventarisierung von Netzwerken gefunden, das mich sowohl von den Funktionen, als auch vom Preis her sehr überzeugt hat.

siehe http://www.loginventory.de

Freundliche Grüße
Member: Worker734
Worker734 Nov 04, 2005 at 15:41:00 (UTC)
Goto Top
Hi,

geht das nicht etwas unkomplizierter?

etwas so,

Echo %1% : %OSVERSION% >> %root%osversion.log

nur dass das nicht geht!

Gruß
Member: Janni
Janni Nov 04, 2005 at 15:44:42 (UTC)
Goto Top
ich kenne nur den DOS Befehle "ver", der gibt aber leider nicht das SP mit aus.
Member: Worker734
Worker734 Nov 04, 2005 at 16:07:28 (UTC)
Goto Top
Habe ich mir schon angeschaut ist aber nur für 20 Clients kostenfrei.

Gruß
Member: Biber
Biber Nov 04, 2005 at 16:38:16 (UTC)
Goto Top
Moin worker734,
Echo %1% : %OSVERSION% >> %root%osversion.log
...mit %OS% statt %OSVERSION%....
nur dass das nicht geht!
... funk-ti-o-niert es.

Ist im IT-Bereich ein wichtiges Detail, ob das Problem eine "Funktionsstörung" oder ein "Funkloch" ist.
Unterschiedliche Lösungsansätze.

Wenn Du auch noch die ServicePacks brauchst, geht das auch per Batch, aber wozu???

Mach sowas doch punktuell (also die Problemfälle suchen) vom Server aus mit der Search.vbs aus den Support-Tools:
For /f "tokens=1,2,3,4" %%i in ('CScript nologo C:\M$\SupportTools\search.vbs "LDAP:dc=meine,dc=meinefirma,dc=com" /Q /C:"&(ObjectCategory=computer)(operatingsystem=Windows XP Professional)(operatingsystemservicepack=service pack 1)"^| find /i " obje"') do ECHO %%j

[der merkwürdige Suchstring "obje" == "objects." in US-Version, "Objekte." in dt.; ggf. prüfen]

HTH Biber
Member: Janni
Janni Nov 04, 2005 at 16:43:27 (UTC)
Goto Top
aber mit %OS% bekommt er nur als Antwort "Windows_NT", egal ob NT, 2K oder XP "antwortet".
Member: Worker734
Worker734 Nov 04, 2005 at 16:52:56 (UTC)
Goto Top
Hi Biber,

nein ich brauche nur die Version des Betriebssystems.
Wenn ich es so mache bekomme ich aber immer Windows_NT
ob der Rechner antwortet oder nicht.

Irgendwie werde ich das Gefühl nicht los, dass das nur meine Betriebssystemversion ist.

Echo %1% : %OS% >> %root%osversion.log
Echo %1% : %OS%
Member: Biber
Biber Nov 04, 2005 at 18:37:54 (UTC)
Goto Top
@Worker734, @Janni
Sorry, hab vorhin vor mich hin geschnarcht... Freitag nachmittag, Biorhythmustief etc.

Also, ihr habt natürlich recht -alles dummes Zeug.

In "Batch und Shell" hat Schuladmin mal ein GetOSVersion-Tutorial gepostet. Da steht ales in ausführlich drin.

Im native Batch geht es ungefähr so (Win9x lass ich mal raus):

ver ... bringt 3-4 Zeilen Output, meist 2 leere dabei.
Eine davon enthält "Microsoft Windows 2000 ..." oder XP oder ähnliches.
Zumindest etwas Unterscheidbares. Also diesen String auswerten.
ver|find "Win" >%temp%\irgendwas.txt
..die entscheidende Zeile bleibt über.
Diese Winzdatei mit find durchsuchen und entsprechend "WinNT", Win2k", "WinXP" ins Log schreiben.

Hope That Fits
Biber
Member: Worker734
Worker734 Nov 04, 2005 at 18:54:01 (UTC)
Goto Top
Hi Biber,

stell ich mich wirklich so blöd an?
wenn ich prompt folgendes eingebe

C:\ver PCname

bekomme ich immer meine Betriebssystemversion angezeigt
obwohl der PC z.B. Win2000 hat

Gruß
Member: Janni
Janni Nov 04, 2005 at 19:18:10 (UTC)
Goto Top
den Befehl "ver" musst Du ja auch per z.B. Batch auf dem Client ausführen ......
Member: Xaero1982
Xaero1982 Mar 30, 2006 at 12:27:03 (UTC)
Goto Top
Auch wenn du mir ein wenig unfreundlich rüber kommst face-smile
On Error Resume Next

Const WbemAuthenticationLevelPktPrivacy = 6

strUser = InputBox("Please enter the user name: ")
strPassword = InputBox ("Please enter the Passwort: ")
strNamespace = "root\cimv2"

'Wiederholt so lange Host erreichbar ist bzw nicht unbekannter host als Meldung erscheint!
do
strComputer = InputBox ("Please enter the name of the computer you want to connect to: ")

If strComputer = "" Then
do
strComputer = InputBox("Please enter correct Computername: ")

loop until strComputer <> "" OR strComputer = False
End If

'Erreichbarkeit des PC's testen - Ping==================

Set objShell = CreateObject("WScript.Shell")
strCommand = "%comspec% /c ping -n 3 -w 1000 " & strComputer & "" 'Ping ausführen
Set objExecObject = objShell.Exec(strCommand)
'=======================================================
Do While Not objExecObject.StdOut.AtEndOfStream
strText = objExecObject.StdOut.ReadAll()
If Instr(strText, "Anforderung") > 0 Then
objshell.popup "Host " & strComputer & " nicht erreichbar!",3
elseif Instr(strText, "Unbekannter Host " & strComputer & ".") <> 0 then
objshell.popup "Host " & strComputer & " nicht erreichbar!",3
end if
loop
loop while Instr(strText, "Unbekannter Host " & strComputer & ".")<>0 OR Instr(strText, "Anforderung") > 0
'=======================================================

'Verbindung zum WMI Namespace herstellen================
Set objWbemLocator = CreateObject("WbemScripting.SWbemLocator")
Set objWMIService = objwbemLocator.ConnectServer (strComputer, strNamespace, strUser, strPassword)
objWMIService.Security_.authenticationLevel = WbemAuthenticationLevelPktPrivacy
'=======================================================

Function GetWMIServices()
Set GetWMIServices = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & strNamespace)
End Function

Set objWMIService = GetWMIServices()
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_OperatingSystem")

For Each objItem In colItems
Message = Message & ("BuildNumber: " & objItem.BuildNumber) &vbcrlf
Message = Message & ("Caption: " & objItem.Caption) &vbcrlf
Message = Message & ("CSDVersion: " & objItem.CSDVersion) &vbcrlf
Message = Message & ("CSName: " & objItem.CSName) &vbcrlf
Next

wscript.echo Message

Speichern unter *.vbs

Du brauchst Adminrechte auf dem auszulesenen PC. Die Daten werden am Anfang abgefragt.

Entweder schreibst du dir noch ne Datei wo du alle Clients auflistest und dir dann einliest und die Ergebnisse in einer anderen Datei speicherst, oder du liest die namen alle aus deinem, wenn vorhanden, AD aus.