探索COM对象交互与WMI管理的奥秘
1. 从MSScriptControl中暴露对象
在与COM对象交互时, Eval() 和 Run() 方法虽能提供对外部函数的访问,但它们缺乏真实方法的特性,更像是一种临时解决方案。我们可以利用脚本控制对象的动态对象生成功能来改善这种情况。
MSScriptControl对象有一个 CodeObject 属性,它返回一个由添加到脚本控制中的脚本组成的匿名对象。这个代码对象会将所有添加的函数作为公共方法暴露出来,使得外部脚本对象与常规的.NET对象几乎没有区别。
下面是使用JScript函数的示例代码:
$jscript = New-Object -COM MSScriptControl.ScriptControl
$jscript.Language = "JScript"
$jsLines = Get-Content "FileSize.js"
$jsCode = [string]::Join("`n", $jsLines)
$jscript.AddCode($jsCode)
$fileName = (dir FileSize.js).FullName
$fileSize = $jscript.CodeObject
$fileSize.GetFileSize($fileName)
运行该脚本后,会输出文件的大小,例如:
PS> .\JScriptCodeObject.ps1
Z:\19 - Ta
订阅专栏 解锁全文
850

被折叠的 条评论
为什么被折叠?



