Jump to content
Sign in to follow this  
mcpuser

OS Version auslesen mit Batch

Recommended Posts

Hallo zusammen,

 

würde gerne mir per script die betriebssystemversion ausgeben lassen.

 

Ausgabe sollte ungefährt so aussehen

 

Microsoft Windows 7 Enterprise 64 Bit SPX 

als Beispiel

 

habe nur gesehen das ich mit WMIC genau die Information mit dem Befehl

 

WMIC OS get caption

bekomme.

 

Ausgabe ist dann aber

 

Caption
Microsoft Windows 7 Enterprise

 

Thematik ist nun das ich in der Ausgabe Caption + Zeilenumbruch nicht möchte. Das ganze soll in einer batchdatei dann laufen.

 

Hat hier jemand eine Idee?

 

Gruß Wolfgang

Share this post


Link to post

Die Ausgabe ist leider zu wenig da ich noch Architektur und SP Version angezeigt haben möchte.

 

folgende Frage drängt sich bei mir nun auf.

 

Ich habe bspw. folgenden Befehl

 

wmic os get caption 

 

Kann ich die Ausgabe in einer Variablen speichern?

 

Gruß Wolfgang

Share this post


Link to post
Hallo,

 

danke dir. Was macht die EXE denn genau?

 

Gruß Wolfgang

 

genau das gleiche wie dein "wmic get os caption" ohne Zeilenumbruch, in VB

 

Option Strict On
' ' Verweis auf System.Management ist notwendig
Module Module1
   Sub Main()
       Dim mos As Management.ManagementObjectSearcher
       Dim moc As Management.ManagementObjectCollection
       Dim mo As Management.ManagementObject
       Dim pd As Management.PropertyData

       mos = New Management.ManagementObjectSearcher( _
         [color="DarkRed"]"SELECT caption FROM Win32_operatingsystem")[/color]
       moc = mos.Get()
       For Each mo In moc
           For Each pd In mo.Properties
               Try
                   [color="DarkRed"]Console.WriteLine(pd.Value.ToString)[/color]
               Catch
                   ' ignore errors
               End Try
           Next
       Next
       moc.Dispose()
       mos.Dispose()
   End Sub
End Module

Edited by blub

Share this post


Link to post

danke dir. habe das mal ausprobiert. Perfekt.

 

Ich bin jetzt mal unverschämt und sage Architektur und SP Version wären auch noch klasse ;-)

 

Habe zwar net wirklich viel Ahnung von VB aber vielleicht kann ich da was machen. Ich wollte das mit ner Batch machen aber das funktioniert nicht wirklich. Ich muss die Ausgabe von einem Befehl abschneiden. Hätte die Ausgabe gerne in eine Variable gepackt aber das funktioniert nicht.

 

wmic os get caption < 123.txt
set osversion=<123.txt
echo %osversion%

 

als ausgabe kommt nur 123.txt

Share this post


Link to post

Moin,

 

du hättest deinen ursprünglichen Befehl viel einfacher halten können:

 

wmic os get caption | find /i /v "caption"

 

Und hier eine Zeile, die die gewünschten Daten ausgibt:

 

wmic os get caption,OSArchitecture,ServicePackMajorVersion,ServicePackMinorVersion | find /i /v "caption"

 

Wenn du Kommas statt Tabs als Trennzeichen haben willst, nimm dies. Dann steht allerdings immer als erstes der Computername dabei (ist im CSV-Format von WMIC so vorgesehen).

 

wmic os get caption,OSArchitecture,ServicePackMajorVersion,ServicePackMinorVersion /format:CSV | find /i /v "caption"

 

 

Gruß, Nils

Share this post


Link to post

ah ok, ich habe die Parameter ohne Komma angegeben sehr hübsch danke

 

Da absolute Oberhammer wäre jetzt aber natürlich auch noch wenn vor dem Servicepack noch SP stehen würde.

 

Kann ich da noch den Text einfügen?

Share this post


Link to post

Moin,

 

kann es sein, dass du hier andere deine Arbeit erledigen lässt? :suspect:

 

Ohne Weiteres bekommst du da keinen Text rein, weil es sich nicht um Parameter handelt, sondern um eine Liste auszugebender Attribute. Du kannst gern ein wenig mit Zeichenkettenfunktionen herumbasteln, um deine Wunschausgabe zu erhalten.

 

Gruß, Nils

Share this post


Link to post

Nein, das möchte ich nicht - da ich von dem Thema nix verstehe frage ich halt.

 

Ich habe gedacht ich mach ne Pipe rein dann ein echo und weiter mit dem nächsten Befehl

 

wmic os get caption | echo hallo123 | wmic os get osarchitecture

 

aber die ausgabe ist dann nur der letzte Befehl

Share this post


Link to post

Hallo mcpuser,

schreib bitte nochmal genau, was du wie brauchst. Dann kompilier ich dir heute abend nochmal eine Version. Oder du machst es direkt, wie Nils es vorgeschlagen hat, ist mir natürlich auch recht!

 

cu

blub

Share this post


Link to post
Hallo mcpuser,

schreib bitte nochmal genau, was du wie brauchst. Dann kompilier ich dir heute abend nochmal eine Version. Oder du machst es direkt, wie Nils es vorgeschlagen hat, ist mir natürlich auch recht!

 

cu

blub

 

Hallo,

 

das ist sehr nett von dir. Lösung derzeit ist eine Batchdatei mit folgendem Befehl

 

wmic os get caption, OSArchitecture | find /i /v "caption"

 

ergibt als Ausgabe

 

Microsoft Windows 7 Enterprise  32-Bit

 

super wäre wenn die Ausgabe

 

Microsoft Windows 7 Enterprise  32-Bit SP1

 

wäre oder halt die jeweilige SP Version

 

Gruß Wolfgang

Share this post


Link to post


'VB2008-code, getestet unter XP/ win7

Imports System.Management
'Verweis auf System.Management einrichten
Module Module1
   Sub Main()
       Dim objQuery As New ObjectQuery("SELECT * FROM Win32_operatingsystem")
       Dim searcher As New ManagementObjectSearcher(objQuery)
       Dim caption As String = ""
       Dim osa As String = ""
       Dim spmv As String = ""

       Try
           For Each mem As ManagementObject In searcher.Get
               caption = mem("Caption")
               spmv = mem("ServicePackMajorVersion")
               osa = mem("OSArchitecture") 'erst ab vista
           Next
       Catch
       End Try

       Console.WriteLine(caption & " " & osa + " SP" & spmv)
   End Sub

End Module

 

OSArchitecture ist erst ab Vista aufwärts verfügbar

Win32_OperatingSystem Class (Windows)

 

Die Expressversion von VisualBasic 2008 liegt bei MS kostenlos zum Downloaden.

Damit kannst du dir den Code bei Bedarf selbst weiter anpassen und compilieren.

 

cu

blub

ConsoleApplication1.zip

Edited by blub

Share this post


Link to post

Moin,

 

na, okay. Dann fühle ich mich herausgefordert. ;)

 

Folgenden Code als VBS-Datei speichern. Keine Kompilierung nötig. Dafür leichter anpassbar.

 

Set objWMI = GetObject("winmgmts:\\.\root\CIMV2")
Set objAquarium = objWMI.InstancesOf("Win32_OperatingSystem",48)
For Each objFish In objAquarium
WScript.Echo objFish.Caption & " " & objFish.OSArchitecture	_
& " SP " & objFish.ServicePackMajorVersion _
& " (" & objFish.ServicePackMinorVersion & ")"
Next

 

Vielleicht ist auch dies für dich interessant:

c't-Artikel: WMI

 

Gruß, Nils

Edited by NilsK
Link zu c't-Artikeln

Share this post


Link to post
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte überlege Dir, ob es nicht sinnvoller ist ein neues Thema zu erstellen.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

Werbepartner:



×
×
  • Create New...