PowerShell如何将管道提取的package.json版本号拼接至curl请求URL
问题解答
1. 单管道拼接参数完全可以实现
你可以通过ForEach-Object(可简写为%)捕获管道传递的版本号,直接拼接进URL,两种常用实现方式如下:
方式1:使用PowerShell原生请求命令
Get-Content package.json | Out-String | ConvertFrom-Json | Select-Object -Expand version | ForEach-Object { Invoke-WebRequest -Uri "http://localhost:3000/api/version/update/$_" }
方式2:调用原生curl二进制
Get-Content package.json | Out-String | ConvertFrom-Json | Select-Object -Expand version | ForEach-Object { curl.exe "http://localhost:3000/api/version/update/$_" }
其中$_代表管道传递到当前步骤的对象,也就是你提取到的版本号。
2. 关于是否替换curl的说明
PowerShell 5.1及更早的Windows默认版本中,curl是Invoke-WebRequest的内置别名,不是系统安装的原生curl二进制文件,直接写curl会调用PowerShell的web请求命令,参数语法和原生curl完全不同,极易报错。建议按需求选择:
- 如果你习惯PowerShell的命令体系,优先用
Invoke-WebRequest,语法统一,返回结果是结构化的PowerShell对象,方便后续做逻辑处理。 - 如果你必须使用原生curl的特定参数,需要明确写
curl.exe来调用原生二进制文件,避免别名冲突。
内容的提问来源于stack exchange,提问作者Christopher Townsend
相关产品推荐
相关产品推荐

