De temps en temps, lorsque j'arrête de force un ordinateur Windows Server 2003 (je n'ai pas le choix), les dossiers contenus dans un certain répertoire modifient tous leur "date de modification" en date du jour.
Heureusement, dans chacun de ces dossiers, les fichiers portent tous la bonne "date de modification".
L'un de ces fichiers sur lequel je souhaite copier la "date de modification (ou de création)" est un fichier .jdf dans lequel se trouvent chacun des dossiers.
J'ai besoin d'aide pour créer un script dans PowerSell.
J'ai trouvé ce script PS1 qui fait presque le boulot:
Get-ChildItem $root | Where-Object {$_.PSIsContainer} | Foreach-Object{
# get the oldest file for the current directory object
$oldest = Get-ChildItem $_.FullName | Sort-Object LastWriteTime | Select-Object LastWriteTime -Last 1
if($oldest)
{
# oldest object found, set current directory LastWriteTime
$_ | Set-ItemProperty -Name CreationTime -Value $oldest.LastWriteTime
$_ | Set-ItemProperty -Name LastWriteTime -Value $oldest.LastWriteTime
}
else
{
# current directory is empty, directory LastWriteTime is left unchanged
Write-Warning "Directory '$($_.FullName)' is empty, skiping..."
}
}
Le problème est que le dernier objet modifié dans les dossiers est parfois des sous-dossiers qui obtiennent également la date du jour comme «date de modification». Comment puis-je lui donner l'air des fichiers à l'intérieur du dossier et non des dossiers?
la source
NTFS
date et l'heure d'un dossier particulier changent chaque fois qu'un objet (fichier ou dossier) est créé ou supprimé à l'intérieur de celui-ci.Réponses:
Considérant que
Get-ChildItem $root -directory
donne le même résultat quevous pouvez essayer (je ne connais pas la
PS
syntaxe verbeuse)ou même
Vous ne savez pas si le reste de votre script nécessite des améliorations ...
la source