Question Lecture d'un CSV en PowerShell
- Faucon
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 43
- Remerciements reçus 0
il y a 10 ans 4 mois #20959
par Faucon
Lecture d'un CSV en PowerShell a été créé par Faucon
Bonjour,
Ma question va vous sembler idiote mais voilà,
Je doit écrire un script qui effectue la purge des fichiers sur différents serveurs en fonction de la date de dernière modification. Cette partie fonctionne bien, en revanche je doit exclure certains type de fichier (.dat, .req, etc), pour ce faire je fais appel à un fichier CSV dans lequel sont renseigné toutes les exceptions, malheureusement il n'en tient pas compte, j'ai déjà fait appel a des CSV dans mes scripts mais la ça ne fonctionne pas et je bloque dessus depuis plusieurs jours et je commence à perdre patiente.
J'implore donc votre aide car je vais commettre un meurtre a ce rythme ^^.
Vous trouverez en PJ mon fichier CSV et mon script.
[code:1]
$filepath1 = \"E:\F2B-BDD1-TST\VOM\TST\SrcFiles\"
$filepath2 = \"E:\F2B-BDD1-TST\VOM\TST\TgtFiles\"
$exclude = Import-Csv -path \".\Files_To_Purge_Exclusions.csv\" -Delimiter \";\"
foreach($exclude in $exclude)
{
$fichier1 = $exclude.Fichier
}
$LastWrite = (Get-Date).AddDays(-1)
$items1 = Get-ChildItem -Force $filepath1 -Recurse -Exclude $fichier1 | Where-Object {$_.LastWriteTime -le \"$LastWrite\"}
$items2 = Get-ChildItem -Force $filepath2 -Recurse -Exclude $fichier1 | Where-Object {$_.LastWriteTime -le \"$LastWrite\"}
$fileLog = \".\file_deleted_log.txt\"
foreach ($item in $items1)
{
if($item.GetType().Name -eq \"FileInfo\"«»)
{
#Si le fichier à été modifié il y plus de 90 jours, je le supprime.
Remove-Item -Path $item.FullName
Write-Host \"Fichier $($item.FullName) supprimé\"
Write-Output \"Fichier supprimé : $($item.FullName)\" | Out-File $fileLog -Append
}
}
foreach ($item in $items2)
{
if($item.GetType().Name -eq \"FileInfo\"«»)
{
#Si le fichier à été modifié il y plus de 90 jours, je le supprime.
Remove-Item -Path $item.FullName
Write-Output \"Fichier supprimé : $($item.FullName)\" | Out-File $fileLog -Append
}
}
[/code:1]
Merci d'avance,
Cordialement,
Mitakue
<br><br>Message édité par: Mitakue, à: 27/10/15 09:43
Ma question va vous sembler idiote mais voilà,
Je doit écrire un script qui effectue la purge des fichiers sur différents serveurs en fonction de la date de dernière modification. Cette partie fonctionne bien, en revanche je doit exclure certains type de fichier (.dat, .req, etc), pour ce faire je fais appel à un fichier CSV dans lequel sont renseigné toutes les exceptions, malheureusement il n'en tient pas compte, j'ai déjà fait appel a des CSV dans mes scripts mais la ça ne fonctionne pas et je bloque dessus depuis plusieurs jours et je commence à perdre patiente.
J'implore donc votre aide car je vais commettre un meurtre a ce rythme ^^.
Vous trouverez en PJ mon fichier CSV et mon script.
[code:1]
$filepath1 = \"E:\F2B-BDD1-TST\VOM\TST\SrcFiles\"
$filepath2 = \"E:\F2B-BDD1-TST\VOM\TST\TgtFiles\"
$exclude = Import-Csv -path \".\Files_To_Purge_Exclusions.csv\" -Delimiter \";\"
foreach($exclude in $exclude)
{
$fichier1 = $exclude.Fichier
}
$LastWrite = (Get-Date).AddDays(-1)
$items1 = Get-ChildItem -Force $filepath1 -Recurse -Exclude $fichier1 | Where-Object {$_.LastWriteTime -le \"$LastWrite\"}
$items2 = Get-ChildItem -Force $filepath2 -Recurse -Exclude $fichier1 | Where-Object {$_.LastWriteTime -le \"$LastWrite\"}
$fileLog = \".\file_deleted_log.txt\"
foreach ($item in $items1)
{
if($item.GetType().Name -eq \"FileInfo\"«»)
{
#Si le fichier à été modifié il y plus de 90 jours, je le supprime.
Remove-Item -Path $item.FullName
Write-Host \"Fichier $($item.FullName) supprimé\"
Write-Output \"Fichier supprimé : $($item.FullName)\" | Out-File $fileLog -Append
}
}
foreach ($item in $items2)
{
if($item.GetType().Name -eq \"FileInfo\"«»)
{
#Si le fichier à été modifié il y plus de 90 jours, je le supprime.
Remove-Item -Path $item.FullName
Write-Output \"Fichier supprimé : $($item.FullName)\" | Out-File $fileLog -Append
}
}
[/code:1]
Merci d'avance,
Cordialement,
Mitakue
La pièce jointe Files_To_Purge_Exclusions.zip est absente ou indisponible
Pièces jointes :
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 10 ans 4 mois #20963
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Lecture d'un CSV en PowerShell
Salut,
essaie avec ceci :
[code:1][string[]]$Fichier1= Import-Csv -path \".\Files_To_Purge_Exclusions.csv\" -Delimiter \";\"|
Select-object -expandProperty Fichier[/code:1]
essaie avec ceci :
[code:1][string[]]$Fichier1= Import-Csv -path \".\Files_To_Purge_Exclusions.csv\" -Delimiter \";\"|
Select-object -expandProperty Fichier[/code:1]
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Faucon
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 43
- Remerciements reçus 0
il y a 10 ans 4 mois #20964
par Faucon
Réponse de Faucon sur le sujet Re:Lecture d'un CSV en PowerShell
Bonjour Laurent,
Merci pour ta réponse, en cherchant j'ai trouvé une alternative qui est d'utiliser un get-content ce qui me donne
[code:1]$exclude = get-content \".\Files_To_Purge_Exclusions.csv\"[/code:1]
Ça fonctionne il me prend bien en compte mes exclusions pour les types de fichier en revanche quand il s'agit d'un répertoire complet ça ne fonctionne pas. C'est peut-être ma ligne dans mon CSV qui n'est pas bonne mais je vais continuer à chercher.
Je reviendrais avec le script et le CSV opérationnels si ça intéresse quelqu'un.
Merci pour ta réponse, en cherchant j'ai trouvé une alternative qui est d'utiliser un get-content ce qui me donne
[code:1]$exclude = get-content \".\Files_To_Purge_Exclusions.csv\"[/code:1]
Ça fonctionne il me prend bien en compte mes exclusions pour les types de fichier en revanche quand il s'agit d'un répertoire complet ça ne fonctionne pas. C'est peut-être ma ligne dans mon CSV qui n'est pas bonne mais je vais continuer à chercher.
Je reviendrais avec le script et le CSV opérationnels si ça intéresse quelqu'un.
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 10 ans 4 mois #20965
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Lecture d'un CSV en PowerShell
Pour le nom de répertoire il se peut qu'il faille le filtrer avec un Where, le comportement du paramètre -Exclude est buggé je crois, à confirmer en recherchant sur ce forum ou sur MSConnect. Difficile de se souvenir de tout les bugs autour de la gestion des path
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Faucon
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 43
- Remerciements reçus 0
il y a 10 ans 4 mois #20968
par Faucon
Réponse de Faucon sur le sujet Re:Lecture d'un CSV en PowerShell
D'accord je regarderais pour les chemins.
J'ai testé ta solution mais ça ne fonctionne pas.
Je vais continuer à chercher, je finirais bien par trouver ^^
J'ai testé ta solution mais ça ne fonctionne pas.
Je vais continuer à chercher, je finirais bien par trouver ^^
Connexion ou Créer un compte pour participer à la conversation.
- Faucon
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 43
- Remerciements reçus 0
il y a 10 ans 4 mois #20974
par Faucon
Réponse de Faucon sur le sujet Re:Lecture d'un CSV en PowerShell
Bonsoir,
Après recherche, j'avoue toujours bloquer pour exclure des dossiers complets de ma suppression, si quelqu'un à une solution je suis preneur ^^.
Merci d'avance,
Bonne soirée,
Mitakue
Après recherche, j'avoue toujours bloquer pour exclure des dossiers complets de ma suppression, si quelqu'un à une solution je suis preneur ^^.
Merci d'avance,
Bonne soirée,
Mitakue
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.099 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les initiés
- Lecture d'un CSV en PowerShell