Exit
  • Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
  • 한국 커뮤니티
Locked
0

Run PowerShell script?

Enthusiast ,
Dec 22, 2014 Dec 22, 2014

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?

TOPICS
Development
4.6K
Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines

correct answers 1 Correct answer

Engaged , Jan 01, 2015 Jan 01, 2015

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.

Translate
Enthusiast ,
Dec 26, 2014 Dec 26, 2014

Anyone? Someone must've had to run a PowerShell script from AIR before?

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Engaged ,
Jan 01, 2015 Jan 01, 2015

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.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Enthusiast ,
Jan 01, 2015 Jan 01, 2015

Thanks much Alex. Will try this tomorrow morning and report back. I appreciate the help.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Enthusiast ,
Jan 07, 2015 Jan 07, 2015

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.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Engaged ,
Jan 07, 2015 Jan 07, 2015
LATEST

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();

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines