首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将"$_.Name“优先于"$_.LastAccessTime”

将"$_.Name“优先于"$_.LastAccessTime”
EN

Stack Overflow用户
提问于 2015-11-02 15:50:08
回答 1查看 141关注 0票数 0

我创建了一个脚本,允许我从Remove-Item语句中搜索和忽略目录,该脚本可以工作,但不一定达到我所需要的程度。

代码语言:javascript
复制
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

此脚本当前正在查找和删除以下所有对象:

  1. 在给定的时间段内未被访问

但是我需要这个脚本做的是找到并删除所有

  1. 在给定的时间段内未被访问,并且
  2. 排除包含"2013“、"2014”或“2015年”名称的目录。

我并不是说剧本“工作不正常”,但我问题的论点是:

如何编写此脚本,以便首先查看目录名,然后查看最后的访问日期?我不知道如何告诉这个脚本$_.Name需要优先于$_.LastAccessTime -lt $Limit

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-02 16:42:20

目前,您的条件的逻辑是:

删除上次在$Limit之前访问的对象,这些对象不是名称包含“2013年”、“2014年”、“2015年”数组的文件夹。

第二个条件永远不是真,因为一个字符串永远不能包含一个字符串数组。

另外,最后一个修改时间存储在LastWriteTime属性中。

你真正想要的是这样的东西:

代码语言:javascript
复制
Where-Object {
  $_.LastWriteTime -lt $Limit -and
  -not ($_.PSIsContainer -and $_.Name -match '2013|2014|2015')
}

如果目录名仅包含年份,而不包含其他任何内容,则还可以使用以下内容:

代码语言:javascript
复制
Where-Object {
  $_.LastWriteTime -lt $Limit -and
  -not ($_.PSIsContainer -and '2013','2014','2015' -contains $_.Name)
}

注意最后一个子句(array -contains value)的相反顺序。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33481567

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档