node调用powershell脚本
前提
.bat 是 Windows 批处理脚本文件的扩展名,用于编写和执行一系列 Windows 命令。
.ps1才是是 PowerShell 脚本文件的扩展名,用于编写和执行 PowerShell 脚本。
PowerShell是更新的windows脚本语言,对比古老的windows早起的脚本语言bat,它更易理解和编写,也更接近于linux上的脚本语言(shell)。
参数传递
node处的写法
const param = [
'-File', './shell/myscript.ps1', // 替换为你的批处理文件路径
参数1, 参数1, 参数3
];
const output = childProcess.execFileSync('powershell', {}, option);
console.log(output.toString()); // 打印脚本的输出,如echo
脚本接受参数
# $arg1=$args[0]
# $arg2=$args[1]
echo 第一个参数是$arg1
脚本乱码
执行node程序的时候,加上个设置编码的
chcp 65001 && node index.js
代码处也要设置
const param = [ '-File', './shell/myscript.ps1'];
const option = {
encoding: 'utf8', // 如果脚本里有中文 一定要设置成这个
env:{
LANG: 'zh_CN.UTF-8', // 要设置这个 否则shell的ui界面会乱码
}
};
const output = childProcess.execFileSync('powershell', param, option);
console.log(output.toString());
然后 powershell脚本文件一定要用保存为ascall编码格式,记得别用vscode编辑。
最后所有都设置完记得重新启动终端(包括vscode集成的那个也要关闭再打开),方可生效
无法读取环境变量
比如java、maven、keytool等等,读取不到的情况
childProcess.execFileSync('powershell', [...], {
...process.env, // 集成父进程的环境变量
...
});