PowerShell 将输出导出到文本文件

Migel Hewage Nimesha 2022年5月16日
PowerShell 将输出导出到文本文件

PowerShell 是最重要的工具之一,由 CLI(命令行界面)组成。它由可用于自动化功能的脚本语言和可用于 CI/CD 环境的配置管理框架组成。PowerShell 支持 Windows、Linux 和 macOS 操作系统。

PowerShell 命令将其标准输出作为命令行界面中的打印行提供。我们可以在 PowerShell 中使用多个命令来获得不同前景的输出。

大多数用户的关键要求之一是从 PowerShell 的命令行界面中获取输出。那就是将输出获取到文本文件。我们可以使用某些 PowerShell 命令来实现此目的。

在 PowerShell 中将输出导出到文本文件

我们将首先考虑一个通常给出标准输出的示例命令。我们将在这里使用的命令是 Compare-Object

Compare-Object 是 PowerShell 中的基本命令之一,它使用户能够比较两个文件。然后程序将输出在这两个文档中找到的更改。

此外,它指向通过 Side Indicator 找到唯一行的文件。此命令通常用于跟踪文件在其不同版本中的更改。

用于比较的两个输入文件及其所有内容如下所示。

在 PowerShell 中将输出导出到文本文件

Compare-Object $(Get-Content .\TestDoc1.txt) $(Get-Content .\TestDoc2.txt)

此命令中使用的两个文件具有字母字符的虚拟数据,每个文件中有几行是唯一的。上面代码的输出是这样的。

InputObject SideIndicator
----------- -------------
JJ          =>
KK          =>
LL          =>
MM          =>
NN          =>
DD          <=
EE          <=
FF          <=
GG          <=

我们的主题是讨论如何将上述输出获取到外部文本文件。

有几个命令可以做到这一点。有些被认为是最好和最简单的。

在 PowerShell 中使用 Out-File 命令将普通命令的输出导出到一个文本文件中

Out-File 是将 PowerShell 命令的输出发送到文件的命令。例如,我们可以使用我们上面选择的命令,如下所示。

Compare-Object $(Get-Content .\TestDoc1.txt) $(Get-Content .\TestDoc2.txt) | Out-File .\TestDoc3.txt

然后输出不是写在 PowerShell 命令行界面中而是直接打印在命令路径中提供的 out 文件中。下面的输出是 TestDoc3 中打印的内容。

InputObject SideIndicator
----------- -------------
JJ          =>           
KK          =>           
LL          =>           
MM          =>           
NN          =>           
DD          <=           
EE          <=           
FF          <=           
GG          <=           

此外,下图显示了与输出文件相同的输出。

将输出导出到 PowerShell 中的文本文件 - 2

可以使用其他选项,例如 Start-TranscriptStop-Transcript。我们可以使用这些来创建在其间运行的每个命令的脚本。

在开始命令之前,你可以输入 Start-Transcript,在你想要编写脚本的命令的末尾,你可以输入 Stop-Transcript

但是,这并不是将命令的输出保存到单独的文本文件的最佳解决方案,因为脚本进程会记录 PowerShell 中发生的所有事情。

因此,我们可以得出结论,out-file 是完成相关任务的最佳解决方案。如上所示,成功接收输出。

Migel Hewage Nimesha avatar Migel Hewage Nimesha avatar

Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.