Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using JScript in powershell

Reading through the documentation for powershells add-type it seems you can add JScript code to you powershell session.

Firstly is there a decent example of how this is done and secondly can you use this to validate normal javascript code (as I understand JScript is the MS implementation)

like image 465
RC1140 Avatar asked Jul 29 '10 07:07

RC1140


2 Answers

This may be a good starting point

PowerShell ABC's - J is for JavaScript (by Joe Pruitt)

Here is a code snippet from the above article:

function Create-ScriptEngine()
{
  param([string]$language = $null, [string]$code = $null);
  if ( $language )
  {
    $sc = New-Object -ComObject ScriptControl;
    $sc.Language = $language;
    if ( $code )
    {
      $sc.AddCode($code);
    }
    $sc.CodeObject;
  }
}
PS> $jscode = @"
function jslen(s)
{
  return s.length;
}
"@
PS> $js = Create-ScriptEngine "JScript" $jscode;
PS> $str = "abcd";
PS> $js.jslen($str);
4
like image 54
Doug Finke Avatar answered Oct 05 '22 12:10

Doug Finke


Here is a simple json parser: https://gist.github.com/octan3/1125017

$code = "static function parseJSON(json) {return eval('(' +json + ')');}"
$JSONUtil = (Add-Type -Language JScript -MemberDefinition $code -Name "JSONUtil" -PassThru)[1]

$obj = $JSONUtil::parseJSON($jsonString)

-PassThru will give you an object (actually two objects; you want the second one) that you can use to call the functions.

You can omit it if you want, and call the function like this:

[Microsoft.PowerShell.Commands.AddType.AutoGeneratedTypes.JSONUtil]::parseJSON($jsonString)

but that's a bit of a pain.

like image 41
John Fouhy Avatar answered Oct 05 '22 11:10

John Fouhy