Powershell Invoke-WebRequest 附加到文件而不是写入
Powershell Invoke-WebRequest appending to a file instead of writing
PowerShell 的 Invoke-WebRequest
提供 -OutFile
将响应正文 写入文件。
@('Global/JetBrains','Global/Vim','Global/VisualStudioCode','Global/macOS','Python','Terraform') `
| ForEach-Object {
Invoke-WebRequest -UseBasicParsing -Outfile "$Env:USERPROFILE/.gitignore" -Uri `
"https://raw.githubusercontent.com/github/gitignore/master/$PSItem.gitignore"
}
我想追加到文件$Env:USERPROFILE/.gitignore
,Invoke-WebRequest
似乎不支持这个。我该怎么做呢?
此外,关于如何让这个 PowerShell 脚本更强大的任何提示 readable/concise?
注意:我使用的是 PowerShell 版本 5.1.19041.1237
。
不要使用-OutFile
,它不支持附加到一个文件;相反,将响应文本输出到成功输出流(管道)。
- 使用
Invoke-RestMethod
rather than Invoke-WebRequest
更简单,因为它直接输出响应文本。
将结果通过管道传输到 Add-Content
以附加到目标文件。
注意:根据后面的要求,目标文件路径已根据this answer更正,确保目标目录存在。
# Make sure that the platform-appropriate target dir. exists.
$outDir = ("$HOME/.config/git", "$HOME/git")[$env:OS -eq 'Windows_NT']
$null = New-Item -Type Directory -Force $outDir
'Global/JetBrains', 'Global/Vim', 'Global/VisualStudioCode', 'Global/macOS', 'Python', 'Terraform' |
ForEach-Object {
Invoke-RestMethod -Uri "https://raw.githubusercontent.com/github/gitignore/master/$PSItem.gitignore"
} |
Add-Content $outDir/ignore
PowerShell 的 Invoke-WebRequest
提供 -OutFile
将响应正文 写入文件。
@('Global/JetBrains','Global/Vim','Global/VisualStudioCode','Global/macOS','Python','Terraform') `
| ForEach-Object {
Invoke-WebRequest -UseBasicParsing -Outfile "$Env:USERPROFILE/.gitignore" -Uri `
"https://raw.githubusercontent.com/github/gitignore/master/$PSItem.gitignore"
}
我想追加到文件$Env:USERPROFILE/.gitignore
,Invoke-WebRequest
似乎不支持这个。我该怎么做呢?
此外,关于如何让这个 PowerShell 脚本更强大的任何提示 readable/concise?
注意:我使用的是 PowerShell 版本 5.1.19041.1237
。
不要使用
-OutFile
,它不支持附加到一个文件;相反,将响应文本输出到成功输出流(管道)。- 使用
Invoke-RestMethod
rather thanInvoke-WebRequest
更简单,因为它直接输出响应文本。
- 使用
将结果通过管道传输到
Add-Content
以附加到目标文件。
注意:根据后面的要求,目标文件路径已根据this answer更正,确保目标目录存在。
# Make sure that the platform-appropriate target dir. exists.
$outDir = ("$HOME/.config/git", "$HOME/git")[$env:OS -eq 'Windows_NT']
$null = New-Item -Type Directory -Force $outDir
'Global/JetBrains', 'Global/Vim', 'Global/VisualStudioCode', 'Global/macOS', 'Python', 'Terraform' |
ForEach-Object {
Invoke-RestMethod -Uri "https://raw.githubusercontent.com/github/gitignore/master/$PSItem.gitignore"
} |
Add-Content $outDir/ignore