web-dev-qa-db-fra.com

Trouver la date de modification d'un fichier / dossier

Je suis très nouveau dans PowerShell et j’espérais pouvoir obtenir de l’aide pour créer un script qui me dirait la date de modification du fichier.

Je souhaiterais en savoir plus sur PowerShell, car j’ai l’impression d’en demander beaucoup (tout mon temps libre cette semaine sera consacré à un meilleur apprentissage de PowerShell). Me diriger vers l'endroit où apprendre comment faire cela serait également très utile.

Voici le récapitulatif complet. J'ai besoin d'exécuter quotidiennement un rapport qui vérifie une liste d'ordinateurs dans 90 magasins différents pour m'assurer que leur sauvegarde a bien été effectuée. La date modifiée doit indiquer si la sauvegarde a été effectuée et sera définie sur la date précédente.

Si la date modifiée est hier, il n'est pas nécessaire qu'il y ait une sortie. Si ce n'est pas hier, j'aimerais que la sortie apparaisse dans la fenêtre PowerShell ou dans un fichier texte, selon ce qui est le plus facile.

Je dois également vérifier qu'un dossier n'a pas plus de sept jours pour chacun des 90 magasins, avec les mêmes critères pour la sortie. L'idée que je ferais serait comme ça pour chaque magasin

Pour le magasin 1:

Check file date for \\server\store\computer\c:\folder\"newest modified date in folder"
if date equals yesterday
   then do nothing
if date does not equal yesterday
   then output "Test did not backup"

check folder modified date for \\server\sample\store\backupfolder
if date equals <7 days old
   then do nothign
if date equals >7 days old
   then output "test did not backup"

Désolé de ne pas avoir prouvé mes efforts de recherche, je suis très nouveau chez Powershell et j’étais sur le point de le faire. Depuis hier, j'ai appris à faire tout ce que je devais faire avec ce script. Merci à @ Keith de m'avoir mis sur le bon chemin. J'ai fini par utiliser le code suivant pour atteindre mon objectif, qui consistait uniquement à décrire l'emplacement où le résultat était faux.

$a = Get-ChildItem \\server\XXX\Received_Orders\*.* | Where{$_.LastWriteTime -ge (Get-Date).AddDays(-7)}
if ($a = (Get-ChildItem \\server\XXX\Received_Orders\*.* | Where{$_.LastWriteTime -ge (Get-Date).AddDays(-7)}))
{
}
Else
{
    'STORE XXX HAS NOT RECEIVED ANY ORDERS IN THE PAST 7 DAYS'
}


$b = Get-ChildItem \\COMP NAME\Folder\*.* | Where{$_.LastWriteTime -ge (Get-Date).AddDays(-1)}
if ($b = (Get-ChildItem \\COMP NAME\TFolder\*.* | Where{$_.LastWriteTime -ge (Get-Date).AddDays(-1)}))
{
}
Else
{
    'STORE XXX DID NOT RUN ITS BACKUP LAST NIGHT'
}
26
Seth Little

Si vous exécutez les commandes Get-Item ou Get-ChildItem, celles-ci généreront des objets System.IO.FileInfo et System.IO.DirectoryInfo contenant ces informations, par exemple:

Get-Item c:\folder | Format-List  

Ou vous pouvez accéder à la propriété directement comme suit:

Get-Item c:\folder | Foreach {$_.LastWriteTime}

Pour commencer à filtrer les dossiers et les fichiers en fonction de la dernière écriture, vous pouvez le faire:

Get-ChildItem c:\folder | Where{$_.LastWriteTime -gt (Get-Date).AddDays(-7)}
50
Keith Hill

Pour obtenir la date de modification sur un seul fichier, essayez:

$lastModifiedDate = (Get-Item "C:\foo.tmp").LastWriteTime

Pour comparer avec un autre:

$dateA= $lastModifiedDate 
$dateB= (Get-Item "C:\other.tmp").LastWriteTime

if ($dateA -ge $dateB) {
  Write-Host("C:\foo.tmp was modified at the same time or after C:\other.tmp")
} else {
  Write-Host("C:\foo.tmp was modified before C:\other.tmp")
}

Voici ce qui a fonctionné pour moi:

$a = Get-ChildItem \\server\XXX\Received_Orders\*.* | Where{$_.LastWriteTime -ge (Get-Date).AddDays(-7)}
if ($a = (Get-ChildItem \\server\XXX\Received_Orders\*.* | Where{$_.LastWriteTime -gt (Get-Date).AddDays(-7)}  
#Im using the -gt switch instead of -ge
{}
Else
{
'STORE XXX HAS NOT RECEIVED ANY ORDERS IN THE PAST 7 DAYS'
}


$b = Get-ChildItem \\COMP NAME\Folder\*.* | Where{$_.LastWriteTime -ge (Get-Date).AddDays(-1)}
if ($b = (Get-ChildItem \\COMP NAME\TFolder\*.* | Where{$_.LastWriteTime -gt (Get-Date).AddDays(-1)))}
{}
Else
{
'STORE XXX DID NOT RUN ITS BACKUP LAST NIGHT'
}
0
TelluRye