Ausführung von vbs über "exec();"

thedolby

Grünschnabel
Problem mit "exec"

Hallo zusammen

Bin langsam aber sicher am Ende meines Wissens:
Ich möchte eine php Funktion erstellen, die über vbs einige Infos per wmi reinholen soll.
Das vbs holt den Hostnamen des zu durchsuchenden PC's aus einem txt File und speichert das Ergebniss auch in einem txt file (wenigstens ist es im Moment für Testzwecke so).
Nun rufe ich das File per exec auf:

PHP:
exec("cscript ScanCom.vbs");

Die vbs Datei funktioniert soweit tip top, denn wenn ich die Infos von einem Remote PC auslesen will und es manuell ausführe krieg ich auch die Infos zurück. Doch wenn ich es über php ausführen will krieg ich nichts.

Thema Berechtigung: Natürlich hab ich auch schon daran gedacht und einiges ausprobiert. Bei der zweiten Version des vbs Files gebe ich den Benutzer, Arbeitsgruppe und Passwort mit. Funktioniert aber über php trotzdem nicht. Bei der ersten Version hab ich das nicht gemacht und konnte den lokalen PC sauber auslesen. Das heisst für mich, dass der Ablauf funktioniert, berechtigungen auf die txt Files richtig sind. Unter anderem hab ich es auch mit Runas versucht (RunASPro).

In php komme ich soweit klar, aber meine vbs Kenntnisse sind sehr sehr in Grenzen.

Hier noch das vbs Script Version2:

Code:
On Error Resume Next
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.CreateTextFile("result.txt", True)
' ### Konstanten
Const EINGABEDATEI = ".\hostname.txt"
' ### Globale Variablen
Dim FSO ' Instanz von Scripting.FileSystemObject
Dim objTX	' Textdatei-Objekt für den zu durchsuchenden Computer
' --- Global benötigtes Objekt
Set FSO = CreateObject("Scripting.FileSystemObject")
' --- Auslesen der Computerliste
Set objTX = FSO.OpenTextFile(EINGABEDATEI)
	strComputer = objTX.ReadLine
' -----------------------------------------------------------
Set objSWbemLocator = CreateObject("Wbemscripting.SWbemLocator")
Set objSWbemServices = objSWbemLocator.ConnectServer _
	(strComputer, "root\cimv2", "arbeitsgruppe\benutzer", "passwort")
objSWbemServices.Security_.ImpersonationLevel = 3
'----------------------------- Herstellerinfos & RAM auslesen -----------------------------
Set colSettings = objSWbemServices.ExecQuery _
	("Select * from Win32_ComputerSystem ")
For Each objComputer in colSettings
	objTextFile.WriteLine "MFName:" & objComputer.Manufacturer
	objTextFile.WriteLine "MFModel:" & objComputer.Model
	objTextFile.WriteLine "RAMSize:" & _
		objComputer.TotalPhysicalMemory/1000000
Next
'----------------------------- Seriennummerinfos -----------------------------
Set colBIOS = objSWbemServices.ExecQuery _
	("Select * from Win32_BIOS")
For each objBIOS in colBIOS
	objTextFile.WriteLine "MFSerial:" & objBIOS.SerialNumber
Next
'----------------------------- Prozessorinfos -----------------------------
Set colItems = objSWbemServices.ExecQuery("Select * from Win32_Processor")
For Each objItem in colItems
	objTextFile.WriteLine "CPUName:"&objItem.Name
Next
objTextFile.WriteLine ""
 
objTextFile.Close


Besten Dank für Eure Mithilfe

TheDolby
 
Zuletzt bearbeitet:
Re: Problem mit "exec"

Was sollte da auch "zurückkommen".... das Skript hat keinen Rückgabewert, und da ist auch nix, was einen etwaigen solchen im PHP-Skript verarbeiten würde.

Das Einfachste wäre, wenn du nach der Skriptausführung die hostname.txt per readfile() ausliest.
 
Re: Problem mit "exec"

Sven Mintel hat gesagt.:
Was sollte da auch "zurückkommen".... das Skript hat keinen Rückgabewert, und da ist auch nix, was einen etwaigen solchen im PHP-Skript verarbeiten würde.

Das Einfachste wäre, wenn du nach der Skriptausführung die hostname.txt per readfile() ausliest.

Sorry, dann hab ich mich nicht klar ausgedrückt:

In die "hostname.txt" wird der Hostname des zu durchsuchenden PC's geschrieben bevor das vbs abläuft.
Im vbs Script wird vom resultat die datei "result.txt" erstelt. Dies wird danach per readfile() ausgelesen.
 

Neue Beiträge

Zurück