我在使用 Powershell 向控制台写入文本时遇到问题

I have a Problem with Powershell writing text to console

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

如果我输入

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

输出是一个包含'Get-tpm:'

的文本文件

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

我非常感谢任何帮助。

谢谢

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

在 Excel 中打开

然而,最后一个 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