📜  从 javascript 执行 powershell 命令(1)

📅  最后修改于: 2023-12-03 15:21:52.892000             🧑  作者: Mango

从 JavaScript 执行 PowerShell 命令

在一些情况下,我们需要在 JavaScript 中执行 PowerShell 命令,本文将介绍如何实现这个目标。具体而言,我们将使用 child_process 模块和 Node.js 的内置 powershell 命令来执行 PowerShell 命令。我们会先安装 child_process 模块,然后演示如何在 Windows 和非 Windows 环境下执行 PowerShell 命令。

安装 child_process 模块

我们首先需要安装 Node.js 内置的 child_process 模块。可以在终端运行以下命令:

npm install child_process
在 Windows 环境下执行 PowerShell 命令

在 Windows 环境下,我们可以使用内置的 powershell 命令来执行 PowerShell 命令。以下是一个示例代码:

const { spawn } = require('child_process');

const ps = spawn('powershell', ['-Command', 'Get-ChildItem C:\\']);

ps.stdout.on('data', (data) => {
  console.log(`stdout: ${data}`);
});

ps.stderr.on('data', (data) => {
  console.error(`stderr: ${data}`);
});

ps.on('close', (code) => {
  console.log(`child process exited with code ${code}`);
});

在代码中,我们首先使用 spawn 函数创建一个新的 PowerShell 进程。在这个进程中,我们执行 Get-ChildItem C:\\ 命令,用于获取 C:\\ 目录下的所有子目录和文件。通过设置 ps.stdout 来监听进程的标准输出,可以在终端中打印出 PowerShell 命令的结果。如果有任何错误发生,我们可以通过设置 ps.stderr 来监听标准错误输出,并在终端中打印出错误信息。

在终端中运行上面的代码,可以看到输出 C:\\ 目录下的所有子目录和文件列表。

在非 Windows 环境下执行 PowerShell 命令

在非 Windows 环境下,我们需要使用 pwsh 命令代替内置的 powershell 命令来执行 PowerShell 命令。以下是一个示例代码:

const { spawn } = require('child_process');

const ps = spawn('pwsh', ['-Command', 'Get-ChildItem /']);

ps.stdout.on('data', (data) => {
  console.log(`stdout: ${data}`);
});

ps.stderr.on('data', (data) => {
  console.error(`stderr: ${data}`);
});

ps.on('close', (code) => {
  console.log(`child process exited with code ${code}`);
});

与在 Windows 环境下执行 PowerShell 命令示例代码类似,我们也是使用 spawn 函数创建一个新的 PowerShell 进程,并执行 Get-ChildItem / 命令,用于获取根目录下的所有子目录和文件。通过设置 ps.stdoutps.stderr 来监听进程的标准输出和标准错误输出,并在终端中打印出结果和错误信息。

在终端中运行上面的代码,可以看到输出根目录下的所有子目录和文件列表。

结论

在本文中,我们介绍了如何在 JavaScript 中执行 PowerShell 命令。我们可以使用 child_process 模块和内置的 powershell 命令或 pwsh 命令来实现这个目标。如果你使用的是 Windows 环境,可以使用 powershell 命令来执行 PowerShell 命令;如果你使用的是非 Windows 环境,可以使用 pwsh 命令来执行 PowerShell 命令。