我创建了一个脚本,允许我从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
。
答案 0 :(得分:1)
目前您的情况逻辑是:
删除
$Limit
之前上次访问过的对象,而不是名称中包含数组的文件夹[" 2013"," 2014"," 2015&#34 ;。]
第二个条件永远不会成立,因为字符串永远不能包含字符串数组。
此外,最后修改时间存储在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
)的颠倒顺序。