Code tel qu'il est en ce moment
get-childitem c:\pstbak\*.* -include *.pst | Where-Object { $_.LastWriteTime -lt (get-date).AddDays(-3)} |
Essentiellement, ce que j'essaie de faire est d’obtenir une liste de tous les fichiers PST du dossier ci-dessus, car ils datent de moins de 3 jours. J'aimerais ensuite compter les résultats. Le code ci-dessus ne fait pas d'erreur, mais ne renvoie aucun résultat (il y a définitivement des fichiers PST plus récents que trois jours. Quelqu'un a une idée?
Essaye ça:
(Get-ChildItem -Path c:\pstbak\*.* -Filter *.pst | ? {
$_.LastWriteTime -gt (Get-Date).AddDays(-3)
}).Count
Très similaire aux réponses précédentes, mais provient du répertoire en cours, examine tous les fichiers et uniquement ceux qui datent de 4 jours. C’est ce dont j’avais besoin pour mes recherches et les réponses ci-dessus ont été très utiles. Merci.
Get-ChildItem -Path . -Recurse| ? {$_.LastWriteTime -gt (Get-Date).AddDays(-4)}
Voici une mise à jour mineure de la solution fournie par Dave Sexton. Plusieurs fois, vous avez besoin de plusieurs filtres. Le paramètre Filter ne peut prendre qu'une seule chaîne, tandis que le paramètre -Include peut contenir un tableau de chaînes. Si vous avez une grande arborescence de fichiers, il est également logique de ne comparer la date qu'avec une seule fois, et non pour chaque fichier. Voici ma version mise à jour:
$compareDate = (Get-Date).AddDays(-3)
@(Get-ChildItem -Path c:\pstbak\*.* -Filter '*.pst','*.mdb' -Recurse | Where-Object { $_.LastWriteTime -gt $compareDate}).Count
Je voulais juste ajouter ceci comme commentaire à la réponse précédente, mais je ne peux pas. J'ai essayé la réponse de Dave Sexton mais j'ai eu des problèmes si le compte était 1. Cela force un tableau même si un objet est retourné.
([System.Object[]](gci c:\pstback\ -Filter *.pst |
? { $_.LastWriteTime -gt (Get-Date).AddDays(-3)})).Count
Il ne renvoie toujours pas zéro s'il est vide, mais le test '-lt 1' fonctionne.