darweet Posted March 24, 2015 Posted March 24, 2015 (edited) Hi all, so I've been trying to write a script that'll run a local .bat file. It's a simple idea that i run a batch file from autoit using the codes below with a simple run command. #RequireAdmin Run( 'C:\AutoTestPackage\TestSuite\SmokeTest\Configure\Temp_Basic.bat' ) Then the batch file will execute the command line psexec -i -d \\SGP101TEST02 -u TEST02 -p admin3t -f -c C:\AutoTestPackage\TestSuite\SmokeTest\Configure\Basic_Configuration.bat However when i run the script below, the cmd window would appear but it gives an error saying 'psexec.exe' is not recognized as an internal or external command. I also tried directly writing this in autoit Run( @ComSpec & " /k C:\Windows\System32\PsExec.exe \\SGP101TEST02 C:\AutoTestPackage\TestSuite\SmokeTest\Configure\Temp_Basic.bat > C:\Temp\My.log") But same error Can anyone tell me what was going on? Btw if i run the .bat manually it worked! Edited March 24, 2015 by darweet
javiwhite Posted March 24, 2015 Posted March 24, 2015 (edited) Hi Darweet and welcome to the forums, If i remember correctly, You need to specify a -c parameter for psexec to copy the batch file to the remote location (unless the bat file is already on the server/remote pc) If the file is on your local pc, I would suggest using the following: Run( @ComSpec & " /k C:\Windows\System32\PsExec.exe \\SGP101TEST02 -c -f C:\AutoTestPackage\TestSuite\SmokeTest\Configure\Temp_Basic.bat > C:\Temp\My.log") The -c and -f parameters do the following: -c : copy to remote location and execute -f: force overwrite of file if already exists (tends to happen quite a bit if you're repeatedly testing your script) EDIT: Seems i misread your first post by quite a landslide (apologies), Whilst your formatting for the psexec command could be better, It should be able to recognise the location, and you would see a psexec error if the formatting is incorrect. I would suggest the following: -Can you verify that psexec is in your system32 folder? -Can you attempt to execute the script as an admin? - I've had issues previously accessing system32 for this very reason. Hope this helps. Javi Edited March 24, 2015 by javiwhite give a man an application, and he'll be frustrated for the day, Teach him how to program applications and he'll be frustrated for a lifetime.
pcjunki Posted March 24, 2015 Posted March 24, 2015 try this. ShellExecute("C:\Windows\System32\PsExec.exe", "\\SGP101TEST02 -f -u TEST02 -p admin3t -c C:\AutoTestPackage\TestSuite\SmokeTest\Configure\Temp_Basic.bat ", "", "")
Solution darweet Posted March 25, 2015 Author Solution Posted March 25, 2015 Thank you for the replies @javiwhite and @pcjunki ! At the end of the day I found out the problem. Turned out AutoIT was looking for PsExec.exe in 64-bit format. In another post I found a solution: DllCall("kernel32.dll", "int", "Wow64DisableWow64FsRedirection", "int", 1) ;Prevent autoIT to look for 64-bit psexec.exe After I added this line before where i call the batch file, everything works fine. Anyway thanks for the replies guys!
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