lordnycon
Goto Top

Systeminfo per batch Datei auslesen

Hallo Forum,

ich habe vor mit einer Batch Datei die Systeminformationen auszulesen. Desweiteren möchte ich auch die installierten Service Packs und Updates auflisten.
Da ich aber bisher noch nie etwas mit batch gemacht habe, tu ich mich da jetzt etwas schwer dieses zu realisieren.

Ich wäre euch super Dankbar wenn mir das jemand kurz erklären könnte, bzw ein kleines Beispiel geben kann wie ich die Systeminformationen auslesen kann per batch.
Den rest werde ich dann schon selber zusammensuchen.

Also mit kleinem Code Beispiel.

Content-ID: 95103

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

Ausgedruckt am: 17.11.2024 um 07:11 Uhr

Iwan
Iwan 22.08.2008 um 13:29:35 Uhr
Goto Top
hallo,

ich würde dir eher zu VBS raten als zu einer Batch, denn das macht das ganze wesentlich einfacher
was genau willst du denn machen: nur lokal auslesen oder auch übers LAN oder wie stellst du dir das vor?

ich z.B. sammle die Dateien meiner Rechner im Netzwerk per Excel-Makro, mit Hilfe von VBS-Code
das wichtigstes lese ich gleich in Excel ein, der Rest wandert in eine TXT, die den Computernamen trägt
LoRdNyCoN
LoRdNyCoN 22.08.2008 um 13:37:36 Uhr
Goto Top
Soll nur auf lokalen Rechner sein, um Fehlerquellen auszuschließen.

Bin da auch sehr offen , muß nicht unbedingt ne batch sein, dachte damit geht das am einfachsten.
Aber so kann man sich irren...

Ich habe zB folgende konstellation. Damit unser CMS Software richtig lüppt, benötigt es zB NetFramework 2x aufwärts.
Dazu wird ebenfalls bei XP min SP2 vorrausgesetzt, um die funktion zu gewähren. Ich wollte nun ein kleines script haben
womit ich diese begebenheiten prüfen kann, ohne mich großartig durch M$ zu wurschteln.

VBS habe ich allerdings noch nichts gemacht. Spreche zwar etwas C++ aber das ist auch nicht auf 1a level...
Dani
Dani 22.08.2008 um 13:44:18 Uhr
Goto Top
Hi Lordnycon,
schau mal im Bereich "Anleitungen" nach. Dort sollte es eine Schritt-für-Schritt für bgInfo geben. Damit kannst du dein komplettes Netzwerk inventarisieren.


Gruss,
Dani
LoRdNyCoN
LoRdNyCoN 22.08.2008 um 13:49:33 Uhr
Goto Top
Danke für den tipp, aber ich würde das gerne nur als txt speichern, da ich die rechner nicht am NW habe,
und es sich dabei um Embbeded XP handelt, ist auch kein Office vorhanden. Und jedesmal die Teile ins NW einbinden wäre zu aufwendig, da ich teilweise auch keinen Zugriff auf unseren Server habe, und auch nicht jedesmal zum Admin rennen möchte

Von daher wäre ne Batch bzw ne VBS Lösung besser geeignet.
Iwan
Iwan 22.08.2008 um 14:05:36 Uhr
Goto Top
und diese Überprüfung macht die Software nicht schon beim installieren?
klingt nach Frickelware für mich...

hier mal der VBS-Code für die Anzeige der Windows Version:
arrComputers = Array("localhost")  
For Each strComputer In arrComputers
   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 objItem.Caption & " " & objItem.CSDVersion  
   Next
Next
LoRdNyCoN
LoRdNyCoN 22.08.2008 um 14:22:34 Uhr
Goto Top
Wie frage ich jetzt noch die installierten updates ab, dann wäre das schwerste mal vom tisch, der rest ist kosmetik face-smile und den schaffe ich dann alleine
Iwan
Iwan 22.08.2008 um 15:04:33 Uhr
Goto Top
sorry, aber ich beantworte keine Fragen per PN, wenn es einen Forumseintrag dazu gibt!

für das .NET kannste ja vielleicht eine Abfrage machen, was im Ordner C:\WINDOWS\Microsoft.NET\Framework\ zu finden ist
bei mir existieren diverse Ordner, u.a. für das .Net 2.0 einer namens v2.0.50727
LoRdNyCoN
LoRdNyCoN 22.08.2008 um 15:44:58 Uhr
Goto Top
Ja werde ich mal testen, wenn ich meine XP Probs gelöst bekomme.

Habe jetzt das Script auf nen Testrechner geschoben, und siehe da, es geht wie erwrtet nicht.
Sagt immer Datei hat keine endung, wird aber als vbs gekennzeichnet von Windows.

Schon dubios das ganze. Kann das sein, das ein Embbeded XP kein vbs versteht? Kann ich mir zwar nicht vorstellen,
aber scheint so zu sein...

Wenn das ganze so schon nicht geht, werde ich mir wohl etwas anderes ausdenken müßen, um diese
Parameter abzufragen.. Dann werde ich wohl doch ein kleines C++ proggie schreiben müßen.....

Trotzdem an dieser Stelle ein "Dankeschön" an dich Iwan... Hat mir sehr geholfen...
Iwan
Iwan 22.08.2008 um 15:57:28 Uhr
Goto Top
vielleicht hat das XPE kein WSH? kA...
LoRdNyCoN
LoRdNyCoN 22.08.2008 um 15:59:08 Uhr
Goto Top
Doch hat es drauf, das ist ja das verwunderliche...

So nun noch 1. sache,

Class Class1
Public mos As Management.ManagementObjectSearcher

Shared Sub Main()
Dim mos As Management.ManagementObjectSearcher
Dim moc As Management.ManagementObjectCollection
Dim mo As Management.ManagementObject
Dim pd As Management.PropertyData
Console.WriteLine("Weiter mit ENTER!")
Console.ReadLine()
Console.WriteLine( _
"Die Eigenschaften aller Laufwerke auslesen:")
mos = New Management.ManagementObjectSearcher( _
"select * from win32_logicaldisk")
moc = mos.Get()
For Each mo In moc
Console.WriteLine("------------")
For Each pd In mo.Properties
Try
Console.WriteLine(pd.Name + " = " + pd.Value.ToString)
Catch
End Try
Next
Console.ReadLine()
Next
moc.Dispose()
mos.Dispose()

Class1.computer()
Console.ReadLine()
Class1.domain()
Console.ReadLine()
Class1.os()
Console.ReadLine()
Class1.shutdown()
Console.ReadLine()
Class1.systemdir()
Console.ReadLine()
Class1.user1()
Console.ReadLine()
Console.WriteLine(user)
Console.ReadLine()
Console.WriteLine(Environment.CommandLine)
Console.ReadLine()
Console.WriteLine("Ende.")
Console.ReadLine()
Class1.enter()
Console.ReadLine()
End Sub

Shared Sub enter()
Console.WriteLine("Beenden mit ENTER.")
End Sub

Shared Sub computer()
Console.WriteLine("Computername: " & Environment.MachineName)
End Sub

Shared Sub shutdown()
Console.WriteLine("Shutdown: " &
Environment.HasShutdownStarted)
End Sub

Shared Sub systemdir()
Console.WriteLine("System-Ordner: " & _
Environment.SystemDirectory)
End Sub

Shared Sub domain()
Console.WriteLine("Aktive Domain: " & _
Environment.UserDomainName)
End Sub

Shared Sub os()
Console.WriteLine(Environment.OSVersion)
End Sub

Shared Sub user1()
Console.WriteLine("Aktiver User: " & Environment.UserName)
End Sub

Private _lastacces As Date
Private _lastwrite As Date

Public Sub New(ByVal s As String)
MyBase.new()
_lastwrite = Now
End Sub

Public Function getlastacces() As Date
Return _lastacces
End Function

Public Function getlastwrite() As Date
Return _lastacces
End Function

Public Shared Property user()
Get
Return user
End Get
Set(ByVal s)
user = s
End Set
End Property
End Class

Wo soll da der fehler sein?
miniversum
miniversum 22.08.2008 um 19:57:01 Uhr
Goto Top
Also wenns Batch sein soll hast du folgende Möglichkeiten.
Entweder du gehst über den WMIC Befehl.
Da kannst du an einige Infos zu System rausholen.

Die andere Möglichkeit wäre in der Registry die entsprechenden Einträge rauszuexportieren. In diesem Bereich der Seite gibts auch einen Beitrag indem das für die installierte Software gemacht wird.