Question
Enregistrer la date du dernier fichier modifier
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 11 ans 9 mois #17561
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Enregistrer la date du dernier fichier modifier
Lymzak écrit:

Lymzak écrit:
En procédant ainsi tu nous fait perdre notre temps, ce n'est pas la meilleure manière d'obtenir de l'aide...
Je suppose que tu souhaites contrôler à intervalle régulier si un répertoire contient de nouveaux fichier par rapport au dernier contrôle effectué ?
C'est bien cela ?
Ce serait trop simple sinonPar contre je suis confronté à un nouveau probléme
Lymzak écrit:
Déjà, explique-nous dés le départ ce que tu veux faire de A à Z, et pas nous donner les informations au fur et à mesure.Je ne vois pas du tout comment faire
En procédant ainsi tu nous fait perdre notre temps, ce n'est pas la meilleure manière d'obtenir de l'aide...
Je suppose que tu souhaites contrôler à intervalle régulier si un répertoire contient de nouveaux fichier par rapport au dernier contrôle effectué ?
C'est bien cela ?
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Lymzak
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 9
- Remerciements reçus 0
il y a 11 ans 9 mois #17562
par Lymzak
Réponse de Lymzak sur le sujet Re:Enregistrer la date du dernier fichier modifier
Oui je suis désolé j'aurais du être plus clair dès le début. Du coup oui je dois contrôler à intervalle régulier un répertoire contenant des fichiers texte. Pour cela je dois créer dans un nouveau répertoire un fichier texte qui contient la date du dernier fichier créer ou modifier.
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 11 ans 9 mois #17563
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Enregistrer la date du dernier fichier modifier
Une ébauche de solution :
[code:1]
function Select-LastWriteTime {
[cmdletbinding()]
param(
[validateNotnull()]
[parameter(mandatory=$true,position=0,helpmessage=\"Entrer le chemin de votre dossier\"«»)]
$path
)
if (Test-Path $Path)
{
Write-Debug \"Select date from $path\"
Get-ChildItem $Path|
#La recherche porte uniquement sur les fichiers
Where {-not $_.psisContainer}|
Measure-Object -Maximum LastWriteTime|
Foreach {
Write-Output $_.Maximum
}
}
else
{ throw \"Répertoire inexistant\" }
}#Select-LastWriteTime
function Get-LastWriteTime {
[cmdletbinding()]
param(
[validateNotnull()]
[parameter(mandatory=$false,position=0,helpmessage=\"Entrer le nom complet du fichier de sauvegarde.\"«»)]
$path=\"C:\Test\logs\lmf.xml\"
)
#si le fichier existe renvoie la date, sinon $null
if (Test-Path $Path)
{
Write-Debug \"Load date from $path\"
Import-CliXml $path
}
}#Get-LastWriteTime
function Set-LastWriteTime {
[cmdletbinding()]
param(
[validateNotnull()]
[parameter(mandatory=$false,position=0,helpmessage=\"Entrer le nom complet du fichier de sauvegarde.\"«»)]
$path=\"C:\Test\logs\lmf.xml\",
[parameter(mandatory=$true,position=1)]
[DateTime]$Date
)
Write-Debug \"save date into $path\"
$Date|Export-CliXml $path
} #Set-LastWriteTime
$DebugPreference='Continue'
$CurrentDate=Select-LastWriteTime c:\temp
$LastControlDate=Get-LastWriteTime
if ($LastControlDate -eq $null)
{
Write-Debug \"Fichier DATE inexistant, on le crée\"
Set-LastWriteTime -Date $CurrentDate
}
elseif ($CurrentDate -gt $LastControlDate)
{
Write-Debug \"La date est mise à jour\"
Set-LastWriteTime -Date $CurrentDate
}
else
{ Write-Debug \"Pas de changement depuis la dernière sauvegarde\" }
$DebugPreference='SilentlyContinue'
[/code:1]
A vérifier et à compléter (gestion d'erreur).
[code:1]
function Select-LastWriteTime {
[cmdletbinding()]
param(
[validateNotnull()]
[parameter(mandatory=$true,position=0,helpmessage=\"Entrer le chemin de votre dossier\"«»)]
$path
)
if (Test-Path $Path)
{
Write-Debug \"Select date from $path\"
Get-ChildItem $Path|
#La recherche porte uniquement sur les fichiers
Where {-not $_.psisContainer}|
Measure-Object -Maximum LastWriteTime|
Foreach {
Write-Output $_.Maximum
}
}
else
{ throw \"Répertoire inexistant\" }
}#Select-LastWriteTime
function Get-LastWriteTime {
[cmdletbinding()]
param(
[validateNotnull()]
[parameter(mandatory=$false,position=0,helpmessage=\"Entrer le nom complet du fichier de sauvegarde.\"«»)]
$path=\"C:\Test\logs\lmf.xml\"
)
#si le fichier existe renvoie la date, sinon $null
if (Test-Path $Path)
{
Write-Debug \"Load date from $path\"
Import-CliXml $path
}
}#Get-LastWriteTime
function Set-LastWriteTime {
[cmdletbinding()]
param(
[validateNotnull()]
[parameter(mandatory=$false,position=0,helpmessage=\"Entrer le nom complet du fichier de sauvegarde.\"«»)]
$path=\"C:\Test\logs\lmf.xml\",
[parameter(mandatory=$true,position=1)]
[DateTime]$Date
)
Write-Debug \"save date into $path\"
$Date|Export-CliXml $path
} #Set-LastWriteTime
$DebugPreference='Continue'
$CurrentDate=Select-LastWriteTime c:\temp
$LastControlDate=Get-LastWriteTime
if ($LastControlDate -eq $null)
{
Write-Debug \"Fichier DATE inexistant, on le crée\"
Set-LastWriteTime -Date $CurrentDate
}
elseif ($CurrentDate -gt $LastControlDate)
{
Write-Debug \"La date est mise à jour\"
Set-LastWriteTime -Date $CurrentDate
}
else
{ Write-Debug \"Pas de changement depuis la dernière sauvegarde\" }
$DebugPreference='SilentlyContinue'
[/code:1]
A vérifier et à compléter (gestion d'erreur).
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Lymzak
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 9
- Remerciements reçus 0
il y a 11 ans 9 mois #17569
par Lymzak
Réponse de Lymzak sur le sujet Re:Enregistrer la date du dernier fichier modifier
Je me suis aidé de ton document pdf sur \"la gestion des erreurs sous powershell\" qui m'a permis de tester toute les conditions du code. Mais je me retrouve confronter à 2 erreurs que je n'arrive pas à corriger. Si quelqu'un a une idée ou a déjà été confronté à ce problème 
Import-Clixml : Données non valides au niveau racine
Set-LastWriteTime : Impossible de valider l'argument sur le paramétre <<path>> l'argument est null. Indiquez un argument non-null et réessayez.
Import-Clixml : Données non valides au niveau racine
Set-LastWriteTime : Impossible de valider l'argument sur le paramétre <<path>> l'argument est null. Indiquez un argument non-null et réessayez.
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 11 ans 9 mois #17570
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Enregistrer la date du dernier fichier modifier
Lymzak écrit:
Lymzak écrit:
Indiquez un argument non-null et réessayez.[/quote]
As-tu modifié le code ?
As-tu l'erreur à chaque fois ?
As-tu réessayé en supprimant le fichier XML ?
Quel OS as-tu et quelle version de Powershell ?
A priori la structure XML est erronée. Pb d'encodage ?Import-Clixml : Données non valides au niveau racine
Lymzak écrit:
Suivre les instructionsSet-LastWriteTime : Impossible de valider l'argument sur le paramétre <<path>> l'argument est null.
Indiquez un argument non-null et réessayez.[/quote]
As-tu modifié le code ?
As-tu l'erreur à chaque fois ?
As-tu réessayé en supprimant le fichier XML ?
Quel OS as-tu et quelle version de Powershell ?
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Lymzak
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 9
- Remerciements reçus 0
il y a 11 ans 9 mois #17572
par Lymzak
Réponse de Lymzak sur le sujet Re:Enregistrer la date du dernier fichier modifier
J'ai modifié la fonctions Select-LastWriteTime, car j'avais un problème avec Measure-object qui m'afficher toutes les dates du répertoire mais avec comme message d'erreurs :
\" l'objet d'entrée <<05/05/2014 12:20:44>> n'est pas numériques\".
[code:1]function Select-LastWriteTime
{
[cmdletbinding()]
param(
[validateNotnull()]
[parameter(mandatory=$true,position=0,helpmessage=\"entrer le chemin de votre dossier\",Valuefrompipeline=$true)]$path1=\"C:\temp\\"
)
$path=\"C:\Test\logs\lmf.xml\"
[System.Collections.ArrayList]$array = @()
foreach($item in (gci $path1))
{
$array.Add($item.LastWriteTime) >$null
}
Write-Output (($array| Sort-Object -Descending)[0])
if (Test-Path $path){
}
else{
New-item -ItemType file -Name lmf.xml -Path \"C:\Test\logs\\" -Value (([System.String]::Format(\"{0:dd/MM/yyyy HH:mm:«»ss}\",(($array| Sort-Object -Descending)[0]))))
}
}[/code:1]
A chaque fois j'ai les même erreurs.
Oui j'ai réessayé en supprimant le fichier XMl.
J'ai pour OS, Microsoft windows 7 professionnel et la version 2.0 de powershell
\" l'objet d'entrée <<05/05/2014 12:20:44>> n'est pas numériques\".
[code:1]function Select-LastWriteTime
{
[cmdletbinding()]
param(
[validateNotnull()]
[parameter(mandatory=$true,position=0,helpmessage=\"entrer le chemin de votre dossier\",Valuefrompipeline=$true)]$path1=\"C:\temp\\"
)
$path=\"C:\Test\logs\lmf.xml\"
[System.Collections.ArrayList]$array = @()
foreach($item in (gci $path1))
{
$array.Add($item.LastWriteTime) >$null
}
Write-Output (($array| Sort-Object -Descending)[0])
if (Test-Path $path){
}
else{
New-item -ItemType file -Name lmf.xml -Path \"C:\Test\logs\\" -Value (([System.String]::Format(\"{0:dd/MM/yyyy HH:mm:«»ss}\",(($array| Sort-Object -Descending)[0]))))
}
}[/code:1]
A chaque fois j'ai les même erreurs.
Oui j'ai réessayé en supprimant le fichier XMl.
J'ai pour OS, Microsoft windows 7 professionnel et la version 2.0 de powershell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.050 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Enregistrer la date du dernier fichier modifier