我有这个命令在超过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目录。
答案 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
}
不幸的是,我无法使用野外卡。