gonlife
Goto Top

Systeminfo (CMD) in VBScript ausführen -.-

Hallo liebe (hoff ich doch) Leute

Ich habe ein Problem, aber zuerst einmal, was ich machen will:

Ich weiss leider nicht, was für Rechner meine Benutzer haben, bzw. Wieviel Memory Sie haben, CPU, Betriebssystem (W2k oder XP), Was für Office sie draufhaben etc. Alles das liefert mir Systeminfo.

Nun, um meine lieben Benutzer nicht stören zu müssen (was vermutlich schneller ginge), und mit einem USB Stick herumrennen zu müssen, damit ich bei jeden Benutzer lokal "Systeminfo /S localhost /U Computername/Administator /P einschönespw /FO List > USBSTiCK/folder/%computername%" schreiben muss, wollte ich ein VBScript schreiben.

Teil eins des Scriptes:

Ich habe beim Active Directory alle Computer exportiert (textfile), dieses Textfile danach in Excel Importiert, das sieht in etwa so aus :>
+--+--------------------+-------------------+
| |A |B | C...
+-------------------------+-------------------+
| 1|Laptop1 |Computer |
+---+--------------------+-------------------+
| 2|Desktop1 |Computer |
+---+--------------------+-------------------+
| ...

Ich lese diese Datei relativ einfach aus

Dim arrComputer(255)

Set objExcel = CreateObject("Excel.Application")  
objExcel.Visible = false
objExcel.Workbooks.Open ("F:\sysnfo\Computername.xls")  
objExcel.Sheets("Computer").Select  
Zeile = 1
Spalte = 1
arrayplatz = 0



Do While ComputerName <> ""  
  ComputerName = objExcel.Cells(Spalte, Zeile).Value
  arrComputer(arrayplatz) = ComputerName
  arrayplatz = arrayplatz + 1
  zeile = zeile + 1
Loop
arrayplatz = 0

So, nun hätten wir unser Array gefüllt mit den Computernamen (atm 0-30)

Nun will ich von jedem Rechner ein Systeminfo haben, dazu muss ich wissen ob der Rechner am Netz ist;

For each Computer in arrComputer

  Set objShell = CreateObject("WScript.Shell")  
  Set objExec = objShell.Exec("ping -n 1 -w 1000 " & strTarget)  
  
  Zeile = Arrayplatz + 1 'ist ja 0 am anfang  
  
  strPingResults = LCase(objExec.StdOut.ReadAll)

[/code]

Bis hierher funktionierts. Ich komm auch nur hier rein, wenn ich den Rechner erreicht habe.

[code]
  If InStr(strPingResults, "reply from") Then  
   objExcel.Cells(Zeile, 3).Value = "Replyed"  
'#######################  
'### Nun der Teil der nicht geht!!1#  
'#######################  
'#######################  
'### Die Rechte stimmen#######  

Set objShell1 = CreateObject("WScript.Shell")  
Set objExec1 = objShell.Exec("systeminfo /s " & Computer & " /U Domain\Administrator /P Passwort /FO LIST > F:\Systeminfo\" & Computer & ".txt")   
  Else
   objExcel.Cells(Zeile, 3).Value = "No respond"  
  End if

Next

Also, es geht hier wirklich um den Systeminfo teil, der andere teil wurde nun von mir hier nur sinngemäss und in etwa geschrieben, er ist getestet und funktioniert. Nur das mit dem Systeminfo funktioniert nicht (keine Fehler, er machts einfach nicht).


Grüsse

Gonlife

Content-ID: 73919

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

Ausgedruckt am: 25.11.2024 um 15:11 Uhr

bastla
bastla 19.11.2007 um 18:12:21 Uhr
Goto Top
Hallo gonlife und willkommen im Forum!

Wie sieht's mit
Set objExec1 = objShell.Exec("cmd /c systeminfo /s " & Computer & " /U Domain\Administrator /P Passwort /FO LIST > F:\Systeminfo\" & Computer & ".txt")  
aus (wobei mir allerdings ein
WshShell.Run "cmd /c systeminfo /s " & Computer & " /U Domain\Administrator /P Passwort /FO LIST > F:\Systeminfo\" & Computer & ".txt", 0  
besser gefiele ...)?

Grüße
bastla
gonlife
gonlife 20.11.2007 um 10:29:00 Uhr
Goto Top
Danke für deine schnelle Hilfestellung und für die herzliche Begrüssung. Hat soweit geklappt, was nicht heisst das es funktioniert :D Ich muss in den Computern in den richtlinien beibringen, dass sie noch den RPC Dienst gestartet haben.

"ERROR: The RPC server is unavailable" grml. man sieht, das viele Leute an diesem Netzwerk gebastelt haben (kein corperate "design")

Aber was anderes:

Ich habe eine Host datei, die ich gerne ändern möchte; es geht dafür um die Verbindung mit Lotus Notes; zum einen in der Domäne, zum anderen via UMTS durch einen SSH Tunnel.

Nun, in der Domäne heisst die Datei:

#comment comment comment
#comment comment comment
127.0.0.1            localhost
192.168.0.1        lotus1
192.168.0.2        lotus2

mein Batchfile müsste danach nur die das Batchfile (mit Administratorrechten!!!) ändern in

#comment comment comment
#comment comment comment
127.0.0.1            localhost
127.0.0.1        lotus1
192.168.0.2        lotus2

D.h. ich müsste es auslesen, welcher Eintrag drin ist, und es dementsprechend Switchen :>, immer und immer wieder in etwa:

if zeilesowieso = "127.0.0.1" then  
   write zeilesowieso "192.168.0.1  
else
if zeilesowieso = "192.168.0.1" then  
   write zeilesowieso "127.0.0.1"  
else
   write zeilesowieso "192.168.0.1"  
end if
end if

So mal so von der Struktur her gesehen :>

Grüsse

Gonlife
bastla
bastla 20.11.2007 um 10:41:26 Uhr
Goto Top
Hallo gonlife!

Aber was anderes:
... würde besser in einen anderen Thread passen.

Grüße
bastla
Biber
Biber 20.11.2007 um 10:55:09 Uhr
Goto Top
@bastla, @gonlife

... würde besser in einen anderen Thread passen.

Jepp. Unterstütze ich. Auch dadurch, dass ich diesen Thread jetzt schliesse.

Grüße
Biber