Javascript 在powershell中使用JScript

Javascript 在powershell中使用JScript,javascript,powershell,Javascript,Powershell,通读powershells add type的文档,您似乎可以将JScript代码添加到powershell会话中 首先,有一个很好的例子来说明这是如何实现的,其次,您可以使用它来验证正常的javascript代码(据我所知,JScript是MS实现)这可能是一个很好的起点 (乔·普鲁伊特) 以下是上述文章中的代码片段: function Create-ScriptEngine() { param([string]$language = $null, [string]$code = $nul

通读powershells add type的文档,您似乎可以将JScript代码添加到powershell会话中


首先,有一个很好的例子来说明这是如何实现的,其次,您可以使用它来验证正常的javascript代码(据我所知,JScript是MS实现)

这可能是一个很好的起点

(乔·普鲁伊特)

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

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

下面是一个简单的json解析器:

-PassThru
将为您提供一个对象(实际上是两个对象;您需要第二个对象),您可以使用该对象调用函数

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

[Microsoft.PowerShell.Commands.AddType.AutoGeneratedTypes.JSONUtil]::parseJSON($jsonString)
但是这有点痛苦。

Jscript.net(或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


谢谢,这几乎是正确的
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