如何使用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 并 运行 我的脚本。
我正在尝试使用 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 并 运行 我的脚本。