阅读Powershell的add-type文档,似乎可以在Powershell会话中添加JScript代码。
首先,是否有一个良好的示例来说明如何完成这个操作?其次,您可以使用此功能验证常规的JavaScript代码吗?(因为我了解JScript是微软的实现)
阅读Powershell的add-type文档,似乎可以在Powershell会话中添加JScript代码。
首先,是否有一个良好的示例来说明如何完成这个操作?其次,您可以使用此功能验证常规的JavaScript代码吗?(因为我了解JScript是微软的实现)
这可能是一个不错的起点。
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
$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)
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