Javascript 如何使用childprocess和nodejs执行windows powershell命令?

Javascript 如何使用childprocess和nodejs执行windows powershell命令?,javascript,node.js,windows,powershell,Javascript,Node.js,Windows,Powershell,我正在尝试通过nodejs脚本运行powershell命令。我发现以下两篇文章向我展示了与我试图实现的目标类似的东西: 在按钮单击事件中,我试图列出当前连接到系统的usb设备及其驱动器号(C、D、E等)。如果我自己在powershell中运行该命令,它就会工作(但我无法让它显示驱动器号)。但是,如果我将其作为脚本的一部分运行,它将不起作用。下面是我的代码: if (process.platform === 'win32' || process.platform === 'win64') {

我正在尝试通过nodejs脚本运行powershell命令。我发现以下两篇文章向我展示了与我试图实现的目标类似的东西:

在按钮单击事件中,我试图列出当前连接到系统的usb设备及其驱动器号(C、D、E等)。如果我自己在powershell中运行该命令,它就会工作(但我无法让它显示驱动器号)。但是,如果我将其作为脚本的一部分运行,它将不起作用。下面是我的代码:

if (process.platform === 'win32' || process.platform === 'win64') {
    exec("powershell.exe",["GET-WMIOBJECT win32_diskdrive | Where { $_.InterfaceType –eq 'USB' }"], function (err, stdout, stderr) {
        console.log(err);
        console.log(stdout);
        console.log(stderr);
    });
}

我做错了什么?

我相信您应该在代码之前使用
-command
传递代码。默认PowerShell语法为:
PowerShell.exe-命令“获取wmiobject…”

大概是这样的:

exec("powershell.exe",["-command \"Get-WmiObject -Class win32_diskdrive | Where { $_.InterfaceType -eq 'USB' }\""], function (err, stdout, stderr) {
    console.log(err);
    console.log(stdout);
    console.log(stderr);
});
你可以用

Node PowerShell利用了当今技术世界中存在的两种最简单、有效且简单的工具。一方面,NodeJS在javascript领域掀起了一场革命,另一方面,PowerShell最近推出了一个最初的开源、跨平台版本,通过将它们连接在一起,使您能够创建要求您创建的任何解决方案,无论您是程序员、IT人员还是DevOps人员

另一种方式

exec('command here', {'shell':'powershell.exe'}, (error, stdout, stderr)=> {
  // do whatever with stdout
})

将其转换为批处理文件/ps脚本,并在没有所有脆弱参数的情况下运行。什么脆弱参数?尝试传递的命令行参数。。。请注意,链接中的答案使用.ps文件。。。