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, // 集成父进程的环境变量
  ...
});
posted @ 2024-06-19 00:39  丁少华  阅读(36)  评论(0编辑  收藏  举报