首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Powershell输出新行

Powershell输出新行
EN

Stack Overflow用户
提问于 2022-07-22 12:05:35
回答 2查看 71关注 0票数 2

在将结果导出到Powershell中的txt时,我遇到了问题。我需要运行两个命令,当它们完成时,我希望得到这样的命令:

代码语言:javascript
复制
Name                                            Version         
----                                            -------         
Mitel Connect                                   214.100.1252.0  
Cylance Unified Agent                           2.4.1070.1      

而不是这样:

代码语言:javascript
复制
Name                                            Version         
----                                            -------         
Mitel Connect                                   214.100.1252.0  

Name                                            Version         
----                                            -------         
Cylance Unified Agent                           2.4.1070.1  

以下是代码:

代码语言:javascript
复制
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

我试过用管道传输代码,谷歌和任何东西都不管用,

有人知道谁能得到输出吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-07-22 14:29:28

如果输出文件只需要记录这两个命令的输出:

  • 通过( 脚本块 ({ ... }))依次调用它们.
  • ..。将输出传输到单个Select-Object调用..。
  • ..。然后,您可以将其输送到单个Out-File调用。
代码语言:javascript
复制
& {
  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),它还允许您稍后迭代地追加到文件中。

票数 2
EN

Stack Overflow用户

发布于 2022-07-22 13:24:04

由于您只获得这些对象的名称和版本,所以将它们推入数组,然后导出数组将按您的意愿工作。但是,如果您试图在每个选择中添加更多属性,这将无法工作。数组中的对象将保留添加到其中的第一个元素的结构。

这是成功创建所需结果的代码。

代码语言:javascript
复制
$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个片段将显示出不想要的效果。

代码语言:javascript
复制
$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“对象提供一个空的供应商道具。

代码语言:javascript
复制
$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“命令中所有数据的”供应商“属性。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73080078

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档