在powershell中使用JScript

时间:2010-07-29 07:59:26

标签: javascript powershell

阅读powershells add-type的文档,您似乎可以向PowerShell会话添加JScript代码。

首先是有一个很好的例子来说明这是如何完成的;其次你可以用它来验证普通的javascript代码(据我所知,JScript是MS的实现)

3 个答案:

答案 0 :(得分:5)

这可能是一个很好的起点

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

以下是上述文章中的代码段:

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

答案 1 :(得分:1)

这是一个简单的json解析器: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将为您提供一个对象(实际上是两个对象;您想要第二个对象),可用于调用函数。

如果需要,可以省略它,并按以下方式调用函数:

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

但这有点痛苦。

答案 2 :(得分:0)

Jscript.net http://www.functionx.com/jscript/Lesson05.htm(或VisualBasic,F#...)必须编译为dll。

Add-Type @'
 class FRectangle {
   var Length : double;
   var Height : double;
   function Perimeter() : double {
       return (Length + Height) * 2; }
   function Area() : double {
       return Length * Height;  } }
'@ -Language JScript


$rect = [frectangle]::new()
$rect

Length Height
------ ------
     0      0