DigDeep Posted February 8, 2022 Posted February 8, 2022 (edited) Hi, I have a Powershell script which I cannot capture output in any external format of text or any other file and I want AutoIT to read the Output ($Result). Is that doable? Powershell Output capture: if ($data -match $GetOps) { $Result = "True" } ELse{ $Result = "False" } AutoIT: Local $PScript = "C:\Test.ps1" Local $Txt = "", $sSTDout = "" Local $RunCMD = "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -command . '" & $PScript & "'" Local $pid = Run($RunCMD, @SystemDir, @SW_HIDE, $STDIN_CHILD + $STDOUT_CHILD + $STDERR_CHILD) StdinWrite($pid) $GetOutput = StdoutRead($pid) While 1 $GetOutput = StdoutRead($pid) If @error Then ExitLoop If $GetOutput <> "" Then MsgBox("", "", $GetOutput) EndIf WEnd Problem is running this, I am able to capture the Powershell PID but not the output. Please help... Edited February 8, 2022 by DigDeep
water Posted February 8, 2022 Posted February 8, 2022 I use the following code to grab the output of a PS script: $sCMD = "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -file " & @ScriptDir & "\NM.ps1" $pid = Run($sCMD, @SystemDir, @SW_HIDE, $STDIN_CHILD + $STDOUT_CHILD + $STDERR_CHILD) StdinWrite($pid, @CRLF) ; Close STDIN StdinWrite($pid) ; Get output from STDOUT $sSTDOUT = "" While 1 $sOutput = StdoutRead($pid) If @error Then ExitLoop If $sOutput <> "" Then $sSTDOUT = $sSTDOUT & @CRLF & $sOutput ; Drops empty lines WEnd ; Get output from STDERR $sSTDERR = "" While 1 $sOutput = StderrRead($pid) If @error Then ExitLoop If $sOutput <> "" Then $sSTDERR = $sSTDERR & @CRLF & $sOutput ; Drops empty lines WEnd faldo 1 My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
nikink Posted April 1, 2022 Posted April 1, 2022 What about from a ps commandline? I have a PShell function I want to pass commands to, and return the PS console output. Like so: PShell_ConsoleCapture("Get-ADComputer -Identity PC-Name") ; example PS only Func PShell_ConsoleCapture($sCmdline) $sCMD = "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -command " & $sCmdline $pid = Run($sCMD, @SystemDir, @SW_HIDE, $STDIN_CHILD + $STDOUT_CHILD + $STDERR_CHILD) StdinWrite($pid, @CRLF) ; Close STDIN StdinWrite($pid) ; Get output from STDOUT $sSTDOUT = "" While 1 $sOutput = StdoutRead($pid) If @error Then ExitLoop If $sOutput <> "" Then $sSTDOUT = $sSTDOUT & @CRLF & $sOutput ; Drops empty lines WEnd ; Get output from STDERR $sSTDERR = "" While 1 $sOutput = StderrRead($pid) If @error Then ExitLoop If $sOutput <> "" Then $sSTDERR = $sSTDERR & @CRLF & $sOutput ; Drops empty lines WEnd ConsoleWrite("Output:" & @CRLF & $sOutput) ConsoleWrite("$sSTDERR:" & @CRLF & $sSTDERR) Return EndFunc Neither $sOutput nor $sSTDERR contain data. Any help would be appreciated.
jugador Posted April 1, 2022 Posted April 1, 2022 @nikink __ExampleA() Func __ExampleA() Local $o_CmdString = ' -command get-module -listavailable' Local $o_powershell = "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" Local $o_Pid = Run($o_powershell & $o_CmdString, '', @SW_Hide, $STDERR_CHILD + $STDOUT_CHILD) ProcessWaitClose($o_Pid) Local $o_Output = StdoutRead($o_Pid) ConsoleWrite($o_Output & @CRLF) EndFunc
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now