Acho que você está pedindo para ver apenas os horários de modificação do arquivo . Não tenho certeza do que você deseja fazer com as pastas, que contêm apenas subpastas que não foram modificadas em um ano. Eu também não tenho certeza se por "cada diretório de nível superior" , você quer dizer a
, b
, c
ou a
, a1
, a2
...
A seguir, os diretórios todos são exibidos, e listá-los somente se eles não contiverem arquivos gravados no ano anterior. Deixe-me saber se isso produz a saída que você está procurando:
$shareName = "\server\share"
$directories = Get-ChildItem -Recurse -Path $path | Where-Object { $_.psIsContainer -eq $true }
ForEach ( $d in $directories ) {
# Any children written in the past year?
$recentWrites = Get-ChildItem $d.FullName | Where-Object { $_.LastWriteTime -gt $(Get-Date).AddYears(-1) }
If ( -not $recentWrites ) {
$d.FullName
}
}
Editar, por seu comentário. Se você deseja obter apenas os diretórios de nível superior que não contêm arquivos modificados no ano anterior, tente o seguinte. Note que em compartilhamentos muito profundos / grandes, isso pode levar algum tempo para ser executado.
$shareName = "\server\share"
# Don't -recurse, just grab top-level directories
$directories = Get-ChildItem -Path $shareName | Where-Object { $_.psIsContainer -eq $true }
ForEach ( $d in $directories ) {
# Get any non-container children written in the past year
$recentWrites = Get-ChildItem $d.FullName -recurse | Where-Object { $_.psIsContainer -eq $false -and $_.LastWriteTime -gt $(Get-Date).AddYears(-1) }
If ( -not $recentWrites ) {
$d.FullName
}
}