使用Powershell拆分CSV单元格(但保留原始文件)

时间:2017-03-28 11:05:21

标签: powershell csv

我试图将目录中的一些pdf文件添加到csv文件中。

我使用下面的PowerShell脚本添加PDF,但问题是我需要拆分(但将每个文件的原始PDF路径保留原样)路径号进入调用。

有没有办法完成这个?

Get-ChildItem -Recurse "C:\Users\alon\Desktop\MYpdf\" |
    ForEach-Object {
        $_ | Add-Member -Name "Owner" -MemberType NoteProperty -Value (Get-Acl $_.FullName).Owner -PassThru
    } |
    Sort-Object FullName |
    Select FullName, CreationTime, LastWriteTime, Length, Owner | 
    Export-Csv -Force -NoTypeInformation "C:\Users\alon\Desktop\MYpdf\directory.csv"

输出应该是这样的:

enter image description here

1 个答案:

答案 0 :(得分:1)

您的意思是您想要将文件名中的数字添加为输出中的其他字段?我会拆分每个文件的基本名称,并根据该信息和文件元数据构建自定义对象:

Get-ChildItem ... |
    ForEach-Object {
        $numbers = $_.BaseName -split '_'

        [PSCustomObject]@{
          FullName      = $_.FullName
          Company       = [int]$numbers[0]
          Invoice       = [int]$numbers[1]
          Deal          = [int]$numbers[2]
          Customer      = [int]$numbers[3]
          Autonumber    = [int]$numbers[4]
          CreationTime  = $_.CreationTime
          LastWriteTime = $_.LastWriteTime
          Length        = $_.Length
          Owner         = (Get-Acl $_.FullName).Owner
    } |
    Sort-Object FullName |
    Export-Csv ...

使用calculated properties也可以,但在这种情况下,构建新对象可以说是更简单的方法。

请注意,[PSCustomObject]类型加速器需要PowerShell v3或更高版本。在旧版本中,您可以通过New-Object创建对象,然后使用Select-Object按定义的顺序获取属性。