你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
@azure/core-process 提供 Node.js 进程启动原语,避免环境壳解析。 它适用于需要在 Windows、macOS 或 Linux 上调用外部可执行文件的 Azure SDK 包和工具。
入门
安装软件包
npm install @azure/core-process
先决条件
重要概念
命令和参数总是单独提供。 该包不提供命令字符串 API,也不允许调用者启用 shell。
import { execFile } from "@azure/core-process";
const { stdout } = await execFile("git", ["rev-parse", "--show-toplevel"]);
console.log(stdout);
在 Windows 上,优先选择原生.exe和.com文件。 批处理文件默认被禁用,因为任意参数无法安全地通过每个 .cmd 或 .bat 包装器传输。 期望批次 shim 的调用者可以选择加入受限批处理路径:
import { execFile } from "@azure/core-process";
const { stdout } = await execFile("npm", ["--version"], {
allowWindowsBatchFiles: true,
});
console.log(stdout);
受限批处理路径拒绝命令运算符、变量展开、换行及其他无法在启动前 cmd.exe 证明安全的值。
如果应用程序需要传递这些值,必须直接调用本地可执行文件或解释器的入口点。
安全边界
该软件包防止命令行数据被环境操作系统壳层解释。 它不证明 on 上的 PATH 可执行文件可信,也不能净化有意传递给解释器的代码,或防止命令特定选项注入。
不要在命令行参数中放置秘密。 进程参数可能对其他本地进程和操作系统诊断可见。
Troubleshooting
在子进程创建之前,Windows 的不安全批处理参数会ProcessError失败。 当参数无法更改时,优先使用原生可执行文件。
Contributing
请参阅 贡献指南。