Nach Funktion Revstr wird aufeinmal eine Leerzeile hinzugefügt VBS
Hallo zusammen,
ich habe mal wieder ein kleines Problem.
Ich habe in VBS ein kleines Script geschrieben welches dazu dienen soll einen Output einer WMIC Variable umzudrehen und nach Lowercaps zu konvertieren.
Leider funktioniert das ganze nicht denn nach dem umwandeln wird der Output auf einmal in 2 Zeilen statt einer ausgegeben.
Hier das Skript.
Set objShell = CreateObject("WScript.Shell")
Set objWshScriptExec = objShell.Exec("wmic bios get serialnumber /VALUE")
Set objStdOut = objWshScriptExec.StdOut
While Not objStdOut.AtEndOfStream
strLine = objStdOut.ReadLine
If InStr(strLine,"=") Then
newstr = Replace(strLine,"SerialNumber=","")
revstr = StrReverse(newstr)
lstr = LCase(revstr)
WScript.Echo "Normal ="&newstr
WScript.Echo "Reverse ="&revstr
WScript.Echo "Revlow ="&lstr
End If
Wend
Ich hoffe mir kann jemand helfen das Problem zu finden und zu lösen. Ich vermute es hängt mit der Ausgabe von WMIC zusammen denn dort werden Leerzeilen mit ausgegeben.
Mit freundlichen Grüßen,
Invisan
ich habe mal wieder ein kleines Problem.
Ich habe in VBS ein kleines Script geschrieben welches dazu dienen soll einen Output einer WMIC Variable umzudrehen und nach Lowercaps zu konvertieren.
Leider funktioniert das ganze nicht denn nach dem umwandeln wird der Output auf einmal in 2 Zeilen statt einer ausgegeben.
Hier das Skript.
Set objShell = CreateObject("WScript.Shell")
Set objWshScriptExec = objShell.Exec("wmic bios get serialnumber /VALUE")
Set objStdOut = objWshScriptExec.StdOut
While Not objStdOut.AtEndOfStream
strLine = objStdOut.ReadLine
If InStr(strLine,"=") Then
newstr = Replace(strLine,"SerialNumber=","")
revstr = StrReverse(newstr)
lstr = LCase(revstr)
WScript.Echo "Normal ="&newstr
WScript.Echo "Reverse ="&revstr
WScript.Echo "Revlow ="&lstr
End If
Wend
Ich hoffe mir kann jemand helfen das Problem zu finden und zu lösen. Ich vermute es hängt mit der Ausgabe von WMIC zusammen denn dort werden Leerzeilen mit ausgegeben.
Mit freundlichen Grüßen,
Invisan
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 226731
Url: https://administrator.de/contentid/226731
Ausgedruckt am: 22.11.2024 um 08:11 Uhr
3 Kommentare
Neuester Kommentar
Hallo Invisan,
in den Zeilen von "StdOut" sind in den Zeilen zusätzlich die Zeilenumbrüche enthalten. Diesen musst du noch entfernen:
p.s. geht auch einfacher direkt via WMI (siehe weiter unten)
Grüße Uwe
in den Zeilen von "StdOut" sind in den Zeilen zusätzlich die Zeilenumbrüche enthalten. Diesen musst du noch entfernen:
Set objShell = CreateObject("WScript.Shell")
Set objWshScriptExec = objShell.Exec("wmic bios get serialnumber /VALUE")
Set objStdOut = objWshScriptExec.StdOut
While Not objStdOut.AtEndOfStream
strLine = objStdOut.ReadLine
If InStr(1,strLine,"=",1) Then
newstr = Left(strLine,Len(strLine)-1)
newstr = Replace(newstr,"SerialNumber=","",1,-1,1)
revstr = StrReverse(newstr)
lstr = LCase(revstr)
WScript.Echo "Normal =" & newstr
WScript.Echo "Reverse =" & revstr
WScript.Echo "Revlow =" & lstr
End If
Wend
p.s. geht auch einfacher direkt via WMI (siehe weiter unten)
Grüße Uwe
Du kannst die Seriennummer aber auch einfacher direkt mit WMI auslesen:
Uwe
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_BIOS",,48)
For Each objItem in colItems
WScript.Echo "SerialNumber: " & objItem.SerialNumber
Next