2013-05-17 66 views
0

我发现在互联网上的脚本,我已经编辑了一点点,但它不工作PowerShell的 - 删除文件日期早丹X天,但排除的文件夹

使用PowerShell WS 2008 R2标准

脚本是:

$del480 = "I:\CISS\Upload" 
Get-ChildItem $del480 -recurse *.* -force | 
    where {$_.lastwritetime -lt (get-date).adddays(-480)} | 
    Remove-Item -recurse 

我需要的是将4个文件夹添加到此脚本,必须排除删除-480天。 这是文件夹:

I:\CISS\Upload\_Atest 
I:\CISS\Upload\_Reporting 
I:\CISS\Upload\_Templates 
I:\CISS\Upload\_Upload files 

有人可以帮助我吗?请记住,我不是剧本作家,我可以读一点点。但是,如果你添加一个像add -exclude .......这样的文本,比我不知道该把它放在哪里。

回答

0

有多种方法可以处理这个问题。你可以在你要检查数组的地方做foreach循环等。以下是只使用管道的替代方法。

创建路径的忽略列表,像这样:

ignorelist.txt

I:\CISS\Upload\_Atest 
I:\CISS\Upload\_Reporting 
I:\CISS\Upload\_Templates 
I:\CISS\Upload\_Upload files 

那就试试下面的脚本

#I stored the date to avoid running it multiple times 
$limit = (Get-Date).AddDays(-480) 
$del480 = "I:\CISS\Upload" 
#Specify path for ignore-list 
$ignore = Get-Content "C:\Ignorelist.txt" 

Get-ChildItem $del480 -Recurse | 
Where-Object {$_.LastWriteTime -lt $limit } | 
Select-Object -ExpandProperty FullName | 
Select-String -SimpleMatch -Pattern $ignore -NotMatch | 
Select-Object -ExpandProperty Line | 
Remove-Item -Recurse 
+0

那岂不是更容易,更简单,并更安全地使用忽略列表首先过滤Get-ChildItem? – EBGreen

+0

我会测试这个,我会将所有子文件夹添加到忽略列表。现在谢谢你。 – user1863225

+0

我不是说你需要添加每个文件夹。这只是一个警告,如果你从'。\ Upload'搜索,并且你添加了'。\ Upload \ Folderone \ Ignore'到列表中,那么'。\ Upload \ Folderone'仍然会被删除(包括下面的所有文件夹)。 –

相关问题