Jump to content

Konsolenausgabe in Varianle einlesen


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

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!

Link zu diesem Kommentar

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

Link zu diesem Kommentar
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

Link zu diesem Kommentar
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 von nahemoth
Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...