阅读powershells add-type的文档,您似乎可以向PowerShell会话添加JScript代码。
首先是有一个很好的例子来说明这是如何完成的;其次你可以用它来验证普通的javascript代码(据我所知,JScript是MS的实现)
答案 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