我正在尝试通过nodejs脚本运行powershell命令。我发现以下两篇文章向我展示了类似于我想要实现的内容: Execute Windows Commands with Nodejs Execute powershell script from nodejs
在按钮点击事件中,我试图列出当前连接到系统的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);
});
}
我做错了什么?
答案 0 :(得分:2)
我相信你会先在-command
之前传递代码。默认的PowerShell语法为:powershell.exe -command "get-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);
});
答案 1 :(得分:2)
您可以使用Node-PowerShell。
Node-PowerShell利用当今技术领域中存在的两种最简单,最有效和最简单的工具。一方面,NodeJS在javascript世界中取得了一场革命,另一方面,PowerShell最近推出了最初的开源,跨平台版本,并通过将它们连接在一起,使您有能力无论您是程序员,IT人员还是DevOps人员,都可以创建您被要求的任何解决方案。
答案 2 :(得分:0)
另一种方式...
exec('command here', {'shell':'powershell.exe'}, (error, stdout, stderr)=> {
// do whatever with stdout
})