Copy link to clipboard
Copied
import flash.filesystem.*;
import flash.desktop.NativeProcess;
import flash.desktop.NativeProcessStartupInfo;
var file:File = new File("C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe");
var nativeProcessStartupInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo();
nativeProcessStartupInfo.executable = file;
var args:Vector.<String> = new Vector.<String>();
args.push("c:\\test\\sendTest.ps1");
nativeProcessStartupInfo.arguments = args;
var process:NativeProcess = new NativeProcess();
process.start(nativeProcessStartupInfo);
Trying to get Powershell to run sendTest.ps1 in the c:\test folder. I get no error, or anything for that matter.
If I issue this at the command prompt:
powershell c:\test\sendTest.ps1
It works fine. But I just can't get the syntax correct to run it from AIR.
Anyone tell me what I'm doing wrong?
1 Correct answer
You need to set ExecutionPolicy argument:
var args:Vector.<String> = new Vector.<String>();
args.push("-ExecutionPolicy");
args.push("Unrestricted");
args.push("c:\\test\\sendTest.ps1");
Without correct ExecutionPolicy you will get PowerShell PSSecurityException error. You can listen ProgressEvent.STANDARD_ERROR_DATA native process event to see it.
Copy link to clipboard
Copied
Anyone? Someone must've had to run a PowerShell script from AIR before?
Copy link to clipboard
Copied
You need to set ExecutionPolicy argument:
var args:Vector.<String> = new Vector.<String>();
args.push("-ExecutionPolicy");
args.push("Unrestricted");
args.push("c:\\test\\sendTest.ps1");
Without correct ExecutionPolicy you will get PowerShell PSSecurityException error. You can listen ProgressEvent.STANDARD_ERROR_DATA native process event to see it.
Copy link to clipboard
Copied
Thanks much Alex. Will try this tomorrow morning and report back. I appreciate the help.
Copy link to clipboard
Copied
Thanks Alex, that worked! I actually was doing nearly what you had there but I had:
args.push("-ExecutionPolicy Unrestricted");
Must not have liked it being on one line.
Problem now is that it takes 2-3 seconds for the powershell to load and run the script. I'd like it to be a lot faster if possible... I'm trying to 'press buttons' in another app, and the lag is a bit too noticeable.
Copy link to clipboard
Copied
For faster operations I think you need to write ANE.
Or may be you can try to run PowerShell and initialize function via script before using it and only after call this function to "press buttons".
I don't try it but may be it works with:
process.standardInput.writeUTFBytes();
