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/.gitignoreInvoke-WebRequest似乎不​​支持这个。我该怎么做呢?

此外,关于如何让这个 PowerShell 脚本更强大的任何提示 readable/concise?

注意:我使用的是 PowerShell 版本 5.1.19041.1237

  • 不要使用-OutFile,它不支持附加到一个文件;相反,将响应文本输出到成功输出流(管道)。

  • 将结果通过管道传输到 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