在将结果导出到Powershell中的txt时,我遇到了问题。我需要运行两个命令,当它们完成时,我希望得到这样的命令:
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我试过用管道传输代码,谷歌和任何东西都不管用,
有人知道谁能得到输出吗?
发布于 2022-07-22 14:29:28
如果输出文件只需要记录这两个命令的输出:
{ ... }))依次调用它们.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),它还允许您稍后迭代地追加到文件中。
发布于 2022-07-22 13:24:04
由于您只获得这些对象的名称和版本,所以将它们推入数组,然后导出数组将按您的意愿工作。但是,如果您试图在每个选择中添加更多属性,这将无法工作。数组中的对象将保留添加到其中的第一个元素的结构。
这是成功创建所需结果的代码。
$arr = @()
get-package 'Microsoft Edge' | select name, version | % { $arr += $_ }
Get-WmiObject -Class Win32_Product | where Name -eq "Go Programming Language amd64 go1.18" | select Name, Version | % { $arr += $_ }
$arr | Out-File "C:\temp\export.txt" -Append如果尝试在select中添加不存在于这两个结构中的属性,下面的2个片段将显示出不想要的效果。
$arr = @()
Get-WmiObject -Class Win32_Product | where Name -eq "Go Programming Language amd64 go1.18" | select Name, Vendor, Version | % { $arr += $_ }
get-package 'Microsoft Edge' | select name,version | % { $arr += $_ }
$arr | Out-File "C:\temp\export.txt" -Append这将为"get-package“对象提供一个空的供应商道具。
$arr = @()
get-package 'Microsoft Edge' | select name,version | % { $arr += $_ }
Get-WmiObject -Class Win32_Product | where Name -eq "Go Programming Language amd64 go1.18" | select Name, Vendor, Version | % { $arr += $_ }
$arr | Out-File "C:\temp\export.txt" -Append这将忽略"Get-WmiObject“命令中所有数据的”供应商“属性。
https://stackoverflow.com/questions/73080078
复制相似问题