nahemoth 10 Geschrieben 4. Juli 2011 Melden Teilen Geschrieben 4. Juli 2011 Hallo, ich möchte die Ausgabe von "change logon /query" in eine Variable einlesen, um damit arbeiten zu können. den Aufruf starte ich mittels: Sub Start_Process(ByVal strComputer As String, ByVal strProcess As String, ByVal UserName As String, ByVal Password As String) Dim processBatch As ManagementClass = New ManagementClass("Win32_Process") Dim inParams As ManagementBaseObject = processBatch.GetMethodParameters("Create") Dim msc As ManagementScope inParams("CurrentDirectory") = Nothing inParams("CommandLine") = strProcess Dim co As ConnectionOptions = New ConnectionOptions() co.Username = "user" co.Password = "password" Try If (strComputer = System.Environment.MachineName) Then msc = New Management.ManagementScope("\\" & strComputer & "\root\cimv2") Else msc = New Management.ManagementScope("\\" & strComputer & "\root\cimv2", co) End If msc.Connect() processBatch.Scope = msc Dim meyhodoptions As InvokeMethodOptions = New InvokeMethodOptions(Nothing, System.TimeSpan.MaxValue) Dim outParamas As ManagementBaseObject = Nothing outParamas = processBatch.InvokeMethod("Create", inParams, Nothing) Catch ex As Exception End Try End Sub geht das, da dann das ergebnis des aufrufs abzufangen? Danke! Zitieren Link zu diesem Kommentar
NilsK 2.918 Geschrieben 4. Juli 2011 Melden Teilen Geschrieben 4. Juli 2011 Moin, die nötige Technik kannst du hier ablesen (das zweite Codebeispiel enthält die relevanten Teile): Zielsucher | heise Netze Gruß, Nils Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 4. Juli 2011 Melden Teilen Geschrieben 4. Juli 2011 Hallo, http://www.mcseboard.de/windows-forum-scripting-71/vb-nbtstat-abfrage-173660.html#post1069745 Probiers mal damit blub Zitieren Link zu diesem Kommentar
nahemoth 10 Geschrieben 5. Juli 2011 Autor Melden Teilen Geschrieben 5. Juli 2011 Alles klar, vielen Dank! jetzt stehe ich nur noch vor dem Problem, wie ich das per WMI auf einer anderen Maschine aufrufen kann: Sub Start_Process(ByVal strComputer As String, ByVal strProcess As String, ByVal UserName As String, ByVal Password As String) Dim processBatch As ManagementClass = New ManagementClass("Win32_Process") Dim inParams As ManagementBaseObject = processBatch.GetMethodParameters("Create") Dim msc As ManagementScope inParams("CurrentDirectory") = Nothing inParams("CommandLine") = strProcess Dim co As ConnectionOptions = New ConnectionOptions() co.Username = "user" co.Password = "password" Try If (strComputer = System.Environment.MachineName) Then msc = New Management.ManagementScope("\\" & strComputer & "\root\cimv2") Else msc = New Management.ManagementScope("\\" & strComputer & "\root\cimv2", co) End If msc.Connect() processBatch.Scope = msc Dim meyhodoptions As InvokeMethodOptions = New InvokeMethodOptions(Nothing, System.TimeSpan.MaxValue) Dim outParamas As ManagementBaseObject = Nothing outParamas = processBatch.InvokeMethod("Create", inParams, Nothing) Catch ex As Exception End Try End Sub genügt es hier als Prozess die sub zu übergeben? Private Sub Login_prüfen() Dim p As New System.Diagnostics.Process p.StartInfo.FileName = "change logon" p.StartInfo.Arguments = "/query" p.StartInfo.RedirectStandardOutput = True p.StartInfo.UseShellExecute = False p.StartInfo.CreateNoWindow = True p.Start() p.WaitForExit() Dim sResult As String = p.StandardOutput.ReadToEnd TextBox1.Text = sResult End Sub Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 5. Juli 2011 Melden Teilen Geschrieben 5. Juli 2011 Alles klar, vielen Dank! jetzt stehe ich nur noch vor dem Problem, wie ich das per WMI auf einer anderen Maschine aufrufen kann: WMI funktioniert nur remote, wenn die WMI-klasse den Parameter -computername hat. Setz dich mal mit WinRM auseinander. Windows Remote Management (Windows) Powershell hat remoting über winrm schon sehr stark integriert PowerShell Powershell Remote - PowerShellPraxis.de. V Mit VB und WinRM habe ich auch noch nichts gemacht. Vielleicht mal bei VB2010 nachsehen. blub Zitieren Link zu diesem Kommentar
nahemoth 10 Geschrieben 6. Juli 2011 Autor Melden Teilen Geschrieben 6. Juli 2011 (bearbeitet) WMI funktioniert nur remote, wenn die WMI-klasse den Parameter -computername hat. das soll ja das Ziel sein, den Befehl per VB von meinem Client remote auf dem Server auszuführen. edit: nun habe ichj es sowiet, dass er das script remote ausführt: Dim p As New System.Diagnostics.Process p.StartInfo.FileName = "H:\Software\Sysinternales\ps-Tools\PsExec.exe " p.StartInfo.Arguments = "\\SERVER ping caresrv1" MsgBox(p.StartInfo.FileName & p.StartInfo.Arguments) p.StartInfo.RedirectStandardError = True p.StartInfo.RedirectStandardOutput = True p.StartInfo.UseShellExecute = False p.StartInfo.CreateNoWindow = False p.Start() p.WaitForExit() Dim sResult As String = p.StandardError.ReadToEnd & p.StandardOutput.ReadToEnd TextBox1.Text = sResult aber, er gibt mir als ausgabe in der textbox nur PsExec v1.98 - Execute processes remotely Copyright © 2001-2010 Mark Russinovich Sysinternals - Windows Sysinternals: Documentation, downloads and additional resources Connecting to SERVER... Starting PsExec service on SERVER... Connecting with PsExec service on SERVER... Starting ping on SERVER... ping exited on SERVER with error code 1. also das was PsExec ausgibt. Wenn ich den Befehl in der Konsole aufrufe bekomme ich aber auch den Inhalt des Pings zu sehen, dies hätte ich auch gerne in dem Textfeld. Auch bekomme ich in der Konsole "Exited with error code 0" und aus VB heraus Error Code 1. Hat jemand eine Idee? Danke! edit: laut diesem Artikel handelt es sich ier um einen Fehler bei psexec :( bearbeitet 6. Juli 2011 von nahemoth Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.