PowerShell 将输出导出到文本文件
PowerShell 是最重要的工具之一,由 CLI(命令行界面)组成。它由可用于自动化功能的脚本语言和可用于 CI/CD 环境的配置管理框架组成。PowerShell 支持 Windows、Linux 和 macOS 操作系统。
PowerShell 命令将其标准输出作为命令行界面中的打印行提供。我们可以在 PowerShell 中使用多个命令来获得不同前景的输出。
大多数用户的关键要求之一是从 PowerShell 的命令行界面中获取输出。那就是将输出获取到文本文件。我们可以使用某些 PowerShell 命令来实现此目的。
在 PowerShell 中将输出导出到文本文件
我们将首先考虑一个通常给出标准输出的示例命令。我们将在这里使用的命令是 Compare-Object
。
Compare-Object
是 PowerShell 中的基本命令之一,它使用户能够比较两个文件。然后程序将输出在这两个文档中找到的更改。
此外,它指向通过 Side Indicator
找到唯一行的文件。此命令通常用于跟踪文件在其不同版本中的更改。
用于比较的两个输入文件及其所有内容如下所示。
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 <=
此外,下图显示了与输出文件相同的输出。
可以使用其他选项,例如 Start-Transcript
和 Stop-Transcript
。我们可以使用这些来创建在其间运行的每个命令的脚本。
在开始命令之前,你可以输入 Start-Transcript
,在你想要编写脚本的命令的末尾,你可以输入 Stop-Transcript
。
但是,这并不是将命令的输出保存到单独的文本文件的最佳解决方案,因为脚本进程会记录 PowerShell 中发生的所有事情。
因此,我们可以得出结论,out-file
是完成相关任务的最佳解决方案。如上所示,成功接收输出。
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.