【问题标题】:Export-csv formatting. Powershell导出 csv 格式。电源外壳
【发布时间】:2013-12-02 14:52:06
【问题描述】:

首先让我们说我是 Powershell 的新手,而不是使用它的代码和脚本但尝试学习的最棒的人。现在解决问题!

我正在编写一个从网络中的计算机获取信息的脚本。我有一些代码非常适合我的目的。但是当涉及到一些信息时我遇到了一些问题,主要是包含多个对象的信息,比如服务。

#This application will pull information from a list of devices. The devices list is
sent with C:\Users\test.txt and output is pushed to a file C:\Users\devices.csv


function kopiera
{
param
(
    [Parameter(ValueFromPipeline=$true)]
    [string[]]$Computer=$env:computername
)    
Process
{
    $computer | ForEach-Object{

        $service=Get-WmiObject -Class Win32_Service -Computername $_


        $prop= [ordered]@{
                    Service =$service.caption 
                }
        New-Object PSCustomObject -Property   $prop
    }
}
}

Get-Content C:\Users\test.txt | kopiera | Export-csv c:\Users\devices.csv

当我导出 csv 文件时,它看起来像这样:

TYPE System.Management.Automation.PSCustomObject

“服务”

"System.Object[]"

所以它没有获取 service.caption(因为太多了?)。 但是,如果我用输出文件 C:\Users\devices.txt 替换 export-csv C:\Users\device.csv 它看起来像这样:

{Adobe Acrobat 更新服务、Adobe Flash Player 更新服务、Andrea ADI 过滤器服务、应用程序体验...}

所以它开始看起来更好了,但并没有得到全部(仍然是因为服务太多?)。我想对这个导出/输出文件做的是让信息垂直而不是水平显示。

(想要的结果)

Adobe Acrobat 服务

Adobe Flash Player 更新服务

等等..

而不是: (实际结果)

Adobe Acrobat 更新服务、Adobe Flash Player 更新服务等...

有没有办法让这成为可能,已经尝试了一段时间,但无法解决这个问题。

感谢任何帮助!

【问题讨论】:

    标签: powershell csv wmi psobject


    【解决方案1】:

    CSV 通常不是导出包含多值或复杂属性的对象的好选择。对象属性将被转换为单个字符串值。存储值数组的唯一方法是将其转换为分隔字符串。

    $prop= [ordered]@{
                      Service =($service.caption) -join ';'
                     }
    

    将创建一个分号分隔的字符串,您必须在以后使用 csv 的任何应用程序中将其拆分回来。

    如果您想保存并重新导入带有属性的原始对象作为数组,您可以切换到 Export-CLIXML 而不是 Export-CSV。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多