我创建了一个脚本,允许我从Remove-Item语句中搜索和忽略目录,该脚本可以工作,但不一定达到我所需要的程度。
Get-ChildItem -Path $Path |
Where-Object {
($_.LastAccessTime -lt $Limit) -and
-not ($_.PSIsContainer -eq $True -and $_.Name -contains ("2013","2014","2015"))
} | Remove-Item -Force -Recurse -WhatIf此脚本当前正在查找和删除以下所有对象:
但是我需要这个脚本做的是找到并删除所有
我并不是说剧本“工作不正常”,但我问题的论点是:
如何编写此脚本,以便首先查看目录名,然后查看最后的访问日期?我不知道如何告诉这个脚本$_.Name需要优先于$_.LastAccessTime -lt $Limit。
发布于 2015-11-02 16:42:20
目前,您的条件的逻辑是:
删除上次在
$Limit之前访问的对象,这些对象不是名称包含“2013年”、“2014年”、“2015年”数组的文件夹。
第二个条件永远不是真,因为一个字符串永远不能包含一个字符串数组。
另外,最后一个修改时间存储在LastWriteTime属性中。
你真正想要的是这样的东西:
Where-Object {
$_.LastWriteTime -lt $Limit -and
-not ($_.PSIsContainer -and $_.Name -match '2013|2014|2015')
}如果目录名仅包含年份,而不包含其他任何内容,则还可以使用以下内容:
Where-Object {
$_.LastWriteTime -lt $Limit -and
-not ($_.PSIsContainer -and '2013','2014','2015' -contains $_.Name)
}注意最后一个子句(array -contains value)的相反顺序。
https://stackoverflow.com/questions/33481567
复制相似问题