如何使用SystemWorker执行PowerShell命令?

How to use SystemWorker to execute PowerShell commands?

我正在尝试使用 Wakanda 服务器端 API 的 SystemWorker 实现一些目标。但我做不到。我确定我在 SystemWorker.

的工作流程中遗漏了一些东西

我想从 Windows 启动 PowerShell,然后 运行 里面有两个命令。要手动执行此操作,我只需 cmd.exe 中的 运行 powershell,然后我就可以开始编写 PowerShell 命令并取回我的数据。

在 Wakanda 中,我使用该代码设置了一个 ssjs 文件:

var powershell = new SystemWorker(['powershell'],null);

powershell.postMessage('Add-Type -AssemblyName "PresentationCore"');
powershell.endOfInput();
powershell.postMessage('[Windows.Media.Fonts]::SystemFontFamilies');
powershell.endOfInput();

powershell.onmessage = function (event) {
    var data = event.data;
    debugger;
};
powershell.onerror = function (event) {
    debugger;
};
powershell.onterminated = function (event) {
    // potentially check event.exitStatus or event.forced
    debugger;
    exitWait();
};
wait();

我还有一个 systemWorkers.json 文件,其中包含:

[
    {
        "name" : "powershell",
        "executable" :
        [
            { "path" : "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" }
        ]
    }
]

我只想在我的 PowerShell 中执行 Add-Type -AssemblyName "PresentationCore"[Windows.Media.Fonts]::SystemFontFamilies 这两个命令来获取机器上所有可用字体的列表。

如果我查看任务管理器,PowerShell 已启动,但我从未执行过我的两个命令行或取回数据。我只实现了在 onterminated 回调中结束。

我错过了什么?

我终于做到了。

现在我将我的命令放在一个 ps1 文件中,作为我的 SystemWorker

的参数

所以看起来像这样:

var powershell = new SystemWorker(['powershell "C:/Users/<MyName>/Desktop/<myScript>.ps1"'],null);

powershell.onmessage = function (event) {

};
powershell.onerror = function (event) {
};
powershell.onterminated = function (event) {
    exitWait();
};
wait();

我认为这样做更容易,所以我的所有命令都在一个文件中,然后我只要求系统工作人员执行 PowerShell 并 运行 我的脚本。