Powershell导出到csv

时间:2014-05-02 12:41:37

标签: powershell

我的文字文件包含一些共享路径(例如\\INTBMCELB\Abbott ADD HR Finance\\INTBMCELB\Abbott ADD HR Finance_VSS等) 我读了这个文本文件中的所有路径以及每个路径中的文件夹 文件夹的详细信息从.csv文件加载 目前,我在此size文件中有一个名为.csv的字段,我需要再添加一个名为“文件类别”的字段。

file category字段应根据文件大小显示说明:

  • 微小(0 KB - 10 KB)
  • 小(10 KB - 100 KB)
  • 中(100 KB - 1 MB)
  • 大(1 MB - 16MB)
  • 巨大(16 MB - 128 MB)
  • Gigantic(> 128 MB)

目前我正在做的事情:

$infile = 'C:\Users\417193\Desktop\MyShareBatch\SharePaths.txt'
$outdir = 'C:\Users\417193\Desktop\MyShareBatch\MyShareOuts'

foreach ($dir in (Get-Content $infile)) {
    Get-ChildItem -Path $dir -Filter *.* -Recurse | Select-Object Name,
        @{Name="Owner";Expression={(Get-ACL $_.fullname).Owner}},CreationTime,
        @{Name="FileModifiedDate";Expression={$_.LastWriteTime}},
        @{Name="FileAccessedDate";Expression={$_.LastAccessTime}},
        @{Name="Attributes";Expression={$_.Attributes}},
        @{l='ParentPath';e={Split-Path $_.FullName}},
        @{Name="DormantFor(days)";Expression={[int]((Get-Date)-$_.LastWriteTime).TotalDays}},
        @{N="FileCategory";E={Get-FileSizeCategory($_)}},
        @{Name="Size";Expression={if($_.PSIsContainer -eq $True){(New-Object -com Scripting.FileSystemObject).GetFolder( $_.FullName).Size} else {$_.Length}}}
}

Function Get-FileSizeCategory($Object){
    if( $Object.PSIsContainer )
    {
        $Length = (New-Object -ComObject Scripting.FileSystemObject).GetFolder($Object.FullName).Size
    }
    else
    {
        $Length = $_.Length
    }

    switch( $Length ) {
        {$_ -le 10KB}  {$Category="Tiny"; break}
        {$_ -le 1MB}   {$Category="Medium"; break}
        {$_ -le 16MB}  {$Category="Large"; break}
        {$_ -le 128MB} {$Category="Huge"; break}
        default        {$Category="Gigantic"}
    }
}

当我尝试从远程服务器执行上述脚本时,文件类别字段不会更新。我也尝试过使用本地服务器路径,但仍然存在同样的问题 在我的本地计算机上,脚本成功执行所有字段。我尝试删除导出到.csv并打印输出,但问题仍然存在。

1 个答案:

答案 0 :(得分:1)

尝试移动_Function Get-FileSizeCategory_以下$outdir以及foreach之前的整个_Function Get-FileSizeCategory_ 此外return $Category没有返回任何内容,因此在结束括号上方添加Function Get-FileSizeCategory($Object){ ...... default {$Category="Gigantic"} } return $Category } 即:

{{1}}

应该这样做。