PowerShell:以长数组的形式编写Export-csv属性

时间:2013-10-22 02:05:41

标签: arrays powershell properties

以下是我的代码示例:


$logpath = @(gci -path "c:\logs")
foreach ($i in $logpath)    
        {
        [array]$n += ($i.tostring()).trimend(".log")
    [array]$t += ($i.tostring()).lastwritetime
    }
$obj = new-object psobject
$obj | Add-Member -MemberType NoteProperty -Name Logname -Value $n
$obj | Add-Member -MemberType NoteProperty -Name LastWriteTime -Value $t
$i | export-csv c:\temp\logs.csv

以下是输出结果:

Name,LastWriteTime  
----,-------------
Value1...,Value1

以下是我想要的样子:

Name,LastWriteTime  
Value1,Value1
Value2,Value2

3 个答案:

答案 0 :(得分:1)

只需使用您的代码就可以试试这个:

$logpath = @(gci -path "c:\logs")
$objects = @() # Empty array
foreach ($i in $logpath)    
{
  $n = ($i.tostring()).trimend(".log")
  $t = ($i.tostring()).lastwritetime

  $obj = new-object psobject
  $obj | Add-Member -MemberType NoteProperty -Name Logname -Value $n
  $obj | Add-Member -MemberType NoteProperty -Name LastWriteTime -Value $t
  $objects += $obj
}

$objects | export-csv c:\temp\logs.csv

我只是在循环中使用一组对象。

答案 1 :(得分:1)

您可以使用basename属性代替修剪文件扩展名:

gci -path "c:\logs" |
select @{l='Name';e={$_.basename}},Lastwritetime |
export-csv c:\temp\logs.csv

答案 2 :(得分:0)

你太努力了。只需使用管道select所需的属性,然后将结果导出为CSV:

$logFolders = 'C:\logs', 'D:\more\logs', 'H:\some\other\logs'
gci -Path $logFolders `
  | select @{n='Logname';e={$_.Name.TrimEnd(".log")}}, LastWriteTime `
  | Export-Csv 'C:\temp\logs.csv'