我在 Powershell 中将结果导出到 txt 时遇到问题。 我需要运行 2 个命令,当它们完成后,我希望得到这样的结果:
Name Version
---- -------
Mitel Connect 214.100.1252.0
Cylance Unified Agent 2.4.1070.1
而不是这个:
Name Version
---- -------
Mitel Connect 214.100.1252.0
Name Version
---- -------
Cylance Unified Agent 2.4.1070.1
这是代码:
get-package 'Microsoft Edge','Mitel Connect', '*7-Zip*','*Cylance*','*Office Profession*','*Dameware*','Cisco AnyConnect Secure Mobility Client' | select name,version | Out-File "C:\temp\export.txt" -Append
Get-WmiObject -Class Win32_Product | where Name -eq "Manageengine AssetExplorer Agent" | select Name, Version | Out-File "C:\temp\export.txt" -Append
我尝试过通过管道传输代码,谷歌但没有任何效果,
有人知道谁可以获得输出吗?
最佳答案
如果输出文件只需要记录这两个命令的输出:
- 通过
&
按顺序调用( script block )它们({ ... }
)... - ...通过管道将输出传输到单个
Select-Object
调用... - ...然后您可以通过管道将其传输到单个
Out-File
调用。
& {
Get-Package 'Microsoft Edge','Mitel Connect', '*7-Zip*','*Cylance*','*Office Profession*','*Dameware*','Cisco AnyConnect Secure Mobility Client'
Get-CimInstance -Class Win32_Product | Where-Object Name -eq "Manageengine AssetExplorer Agent"
} |
Select-Object Name, Version |
Out-File "C:\temp\export.txt"
这样,输出对象就可以通过单个 Out-File
调用一起格式化为单个表。
(相比之下,如果您多次调用 Out-File
次,每次调用都会在文件中获得一个单独的表 ,这就是您所看到的。)
但请注意,生成的文件格式仅用于显示目的,因为它使用默认情况下在控制台(终端)中看到的相同丰富格式,这意味着人类观察者而不是编程处理。
对于编程处理,请考虑使用结构化文本格式,例如 CSV ( Export-Csv
),它还允许您稍后迭代地追加到文件。
关于Powershell输出新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73080078/