$iPID = Run(@COMSPEC & ' /c ' & $sCommand, "", @SW_HIDE, $STDOUT_CHILD + $STDERR_CHILD)
If Not @error Then
If Not @error Then
...sehr tückisch... funktioniert evt. nicht wie gedacht, denn Run() liefert dir einen Fehlercode, wenn @COMSPEC nicht ausgeführt werden konnte, aber nicht, wenn die Befehle net|find nicht existieren oder an @COMSPEC|net|find Parameter übergeben wurden, die entweden nicht exisiteren oder mit False beantwortet wurden!
Zur Info: @COMSPEC wird bei Run() & Co nur zur Ausführung interner Befehle der cmd.exe benötigt, für die es keine ausführbare Datei gibt, oder wenn die Ausgabe via Pipe ("|") an einen anderen (internen) Befehl übergeben wird, oder wenn eine Dateiumleitung (">", "<") benötigt wird.
Hier ein Bsp. mit mehreren Fehlern... Run() gibt aber trotzdem keine Fehlermeldung zurück...
#include <WinAPI.au3>
Local $sCommand = @COMSPEC & ' /ß ' & 'netz user ' & @UserName & ' |findx /I "Letztes Setzen des Kennworts"'
ConsoleWrite(_WinAPI_WideCharToMultiByte("@@ Debug line" & @TAB & @ScriptLineNumber & " var: $sCommand --> " & $sCommand, 65001) & @CRLF)
Local $iPID = Run($sCommand, "", @SW_HIDE, BitOR($STDOUT_CHILD, $STDERR_CHILD))
If @error Then
ConsoleWrite("@@ Debug line" & @TAB & @ScriptLineNumber & " var: @COMSPEC --> " & @COMSPEC & @CRLF & "!@ " & @TAB & "#Error: " & @error & @CRLF)
Else
ProcessWaitClose($iPID)
ConsoleWrite("@@ Debug line" & @TAB & @ScriptLineNumber & " var: $iPID --> " & $iPID & @CRLF)
Local $sSTDOUTText = StdoutRead($iPID)
ConsoleWrite("@@ Debug line" & @TAB & @ScriptLineNumber & " var: $sSTDOUTText --> " & $sSTDOUTText & @CRLF)
EndIf
Alles anzeigen
Ausgabe:
@@ Debug line 3 var: $sCommand --> C:\WINDOWS\system32\cmd.exe /ß netz user ghost |findx /I "Letztes Setzen des Kennworts"
@@ Debug line 9 var: $iPID --> 13704
@@ Debug line 11 var: $sSTDOUTText --> Microsoft Windows [Version 10.0.17763.292]
(c) 2018 Microsoft Corporation. Alle Rechte vorbehalten.