首页 > 解决方案 > 我在使用 Powershell 向控制台写入文本时遇到问题

问题描述

对于大多数人来说,这很容易回答,但我正在努力解决这个问题。例如,如果我输入Get-Tpm,我得到的返回是, Get-tpm写入控制台,如下所示。

如果我输入

ECHO Get-tpm > C:\dssupport\output.txt

输出是一个包含“Get-tpm:”的文本文件

截屏

有没有办法做到这两点,这样我就可以在我的显示器上看到它,也可以保存为文本文件?

我很感激任何帮助。

谢谢

标签: powershellwindows-scripting

解决方案


大多数 PowerShell cmdlet 都喜欢Get-Tpm输出对象,这些对象通常显示在控制台屏幕上,格式为表格或列表。您可以轻松地将这样的输出写入文件,通常是结构化的 Csv 文件,您可以使用Export-Csv.

然而,最后一个 cmdlet 没有像参数那样简洁的东西-PassThru,但是你可以做的是使用一个 cmdlet,它可以让你做到这一点。

在你的例子中,你可以做

# show on screen AND write to CSV file
Get-Tpm | ConvertTo-Csv -NoTypeInformation | Set-Content -Path 'X:\TPM.csv' -PassThru

或者

# show on screen AND write to JSON file
Get-Tpm | ConvertTo-Json | Set-Content -Path 'X:\TPM.json' -PassThru

甚至

# show on screen as list AND write to text file
Get-Tpm | Format-List | Out-String | Set-Content -Path 'X:\TPM.txt' -PassThru

尽管像这样编写的文件实际上并不能用于显示目的以外的任何用途。

或者您可以在单独的代码行中执行此操作,例如在屏幕上显示为列表,在另一行中写入 csv 文件。为此,您需要在变量中捕获 cmdlet 的结果:

$result = Get-Tpm
# show on screen as list (or table)
$result | Format-List   # or do Format-Table -AutoSize

# show in a separate grid view window
$result | Out-GridView -Title "My TPM results"

# output to CSV file
$result | Export-Csv -Path 'X:\TPM.csv' -NoTypeInformation

推荐阅读