将“$_.Name”优先于“$_.LastAccessTime”
Prioritizing "$_.Name" over "$_.LastAccessTime"
我创建了一个脚本,允许我从 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
此脚本当前正在查找并删除
的所有对象
- 在给定时间段内未访问过
但是我需要这个脚本做的是找到并删除所有对象
- 在给定时间段内未访问过 AND
- 排除名称为“2013”、“2014”或“2015”的目录。
我不是在争论脚本 "isn't working properly",但我的问题的论点是这样的:
如何编写此脚本以首先查看目录名称,然后再查看上次访问日期?我不知道 在哪里以及如何 告诉这个脚本 $_.Name
需要优先于 $_.LastAccessTime -lt $Limit
。
目前你的条件逻辑是这样的:
Delete objects that were last accessed before $Limit
and are not folders whose name contains the array ["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
)。
我创建了一个脚本,允许我从 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
此脚本当前正在查找并删除
的所有对象- 在给定时间段内未访问过
但是我需要这个脚本做的是找到并删除所有对象
- 在给定时间段内未访问过 AND
- 排除名称为“2013”、“2014”或“2015”的目录。
我不是在争论脚本 "isn't working properly",但我的问题的论点是这样的:
如何编写此脚本以首先查看目录名称,然后再查看上次访问日期?我不知道 在哪里以及如何 告诉这个脚本 $_.Name
需要优先于 $_.LastAccessTime -lt $Limit
。
目前你的条件逻辑是这样的:
Delete objects that were last accessed before
$Limit
and are not folders whose name contains the array ["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
)。