在大卷上设置文件属性(内存泄漏?)

时间:2014-04-24 07:04:41

标签: powershell file-io memory-leaks attributes powershell-v2.0

我有这个命令在超过100台服务器(2008R2,powershell 2)上正常运行,除了一个特定的服务器,它杀死了它的内存(powershell.exe消耗超过6 GB的RAM)。

Get-ChildItem -Path E:\ -Exclude Thumbs.db,"$RECYCLE.BIN*","~$*","System Volume Information" -recurse -force  | where {$_.Attributes -NotMatch "Archive"} | %{$_.Attributes = [System.IO.FileAttributes]::Archive}

有人可以解释一下吗?是否有更有效的方法在大约200GB大小的卷上设置存档属性?


更新 它似乎是exclude参数的罪魁祸首:我可以在处理过的文件中看到$ recycle.bin目录。

1 个答案:

答案 0 :(得分:0)

问题是如果在驱动器的根目录上启动了get-childitem,则-exclude参数将失败(PS V3上的问题相同)。更多详情:http://powershell.com/cs/forums/p/12202/21382.aspx#21382

这是我糟糕的解决方法:

$exclude=@('$RECYCLE.BIN',"SYSTEM VOLUME INFORMATION","Thumbs.db")
ls e: | ?{ $exclude -notcontains $_.name  }|%{
    ls -recurse -force $_.fullname} |%{ 
    $_.attributes=[System.IO.FileAttributes]::Archive
}

不幸的是,我无法使用野外卡。