Question Modif. du creationtime de x fichiers (Résolu)

Plus d'informations
il y a 14 ans 10 mois #4791 par sonic
Bonjour,
Voila j'ai passé un peu de temps sans faire du powershell et du coup j'ai de petits soucis . J'ai chercher mais j'arrive pas trouver !! Pourtant je suis sur que c'est très simple .
Je voudrais remettre a une date donné (car l'originale est fausse d'entré on ne sais comment) des fichiers dans une arborescence .
j'ai donc écris cela :
[code:1]# On défini la date de création que l'on vas donner .
$Date_creation = (Get-Date –year 2008)

# on stoke la date a l'instant T
$date=get-date

# Ici on liste les fichiers dont la date de création est supérieure a la date d'aujourd hui puis on modifie leur date de création
gci -r C:\dev\trvtest\cret | where {($_.PSIsContainer -eq $false) -and ($_.creationtime -gt $date)} | format-list FullName |foreach {(get-item $_).set_CreationTime.year($Date_creation)}
[/code:1]
Alors ça, ça marche si je lance le script dans le répertoire ou se trouve les fichiers et si il n'y a pas de sous répertoires .Ça n'est pas du tout le cas la ou je vais le lancer . J'ai mis le format-list fullname car je vois bien dans le message d'erreur qu'il cherche la ou se lance et pas ou il devrait . Pourtant il me semble bien renvoyer ce qu'il faut dans la commande car si on enlève le traitement de fin on vois bien les fichiers ou le création time ne va pas (année 3922 ou 2773 par exemple ) .
Voisi un exemple de message d'erreur .
PS C:\dev\trvtest> gci -r C:\dev\trvtest\cret | where {($_.PSIsContainer -eq $false) -and ($_.creationtime -gt $date)} |
format-list FullName |foreach {(get-item $_).set_CreationTime($Date_creation)}
Get-Item : Impossible de trouver le chemin d'accès « C:\dev\trvtest\Microsoft.PowerShell.Commands.Internal.Format.Forma
tStartData », car il n'existe pas.
Au niveau de ligne : 1 Caractère : 143
+ gci -r C:\dev\trvtest\cret | where {($_.PSIsContainer -eq $false) -and ($_.creationtime -gt $date)} | format-list Ful
lName |foreach {(get-item <<<< $_).set_CreationTime($Date_creation)}
Vous ne pouvez pas appeler de méthode sur une expression ayant la valeur Null.
Au niveau de ligne : 1 Caractère : 164
+ gci -r C:\dev\trvtest\cret | where {($_.PSIsContainer -eq $false) -and ($_.creationtime -gt $date)} | format-list Ful
lName |foreach {(get-item $_).set_CreationTime( <<<< $Date_creation)}
Get-Item : Impossible de trouver le chemin d'accès « C:\dev\trvtest\Microsoft.PowerShell.Commands.Internal.Format.Group
StartData », car il n'existe pas.

Je suppose que je renvois pas au bon format a get-item ou pas de la bonne manière ? Pas ce qu'il faut ?

Message édité par: sonic31, à: 10/06/09 11:09<br><br>Message édité par: Arnaud, à: 11/06/09 23:18

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 14 ans 10 mois #4792 par Laurent Dardenne
Il est préférable de placer Format-* en fin de pipeline, car l'object en sortie est totalement différent.
Que donne ceci :
[code:1]
gci C:\dev\trvtest\cret -recurse |`
where {($_.PSIsContainer -eq $false) -and ($_.creationtime -gt $date)} |`
foreach {$_.CreationTime.year=$Date_creation}
[/code:1]
ou pour vérifier uniquement :
[code:1]
gci C:\dev\trvtest\cret -recurse |`
where {($_.PSIsContainer -eq $false) -and ($_.creationtime -gt $date)} |`
Select FullName,CreationTime[/code:1]

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 14 ans 10 mois #4793 par sonic
Super ça fonctionne .
J'ai juste pas pu ne modifier la date car il me disait dans ce cas qu'elle était en écriture seule . Sauf que si je modifie tout ben la il le prend . Bon en tous cas ça fonctionne .
Merci

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.067 secondes
Propulsé par Kunena