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!

Recommended Posts

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 to comment

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 to comment
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 to comment
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 :(

Edited by nahemoth
Link to comment
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...