Question
Pb entre Version 4 et 5 de PowerShell
- POTEY
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 2
- Remerciements reçus 0
il y a 1 an 4 mois #32282
par POTEY
Pb entre Version 4 et 5 de PowerShell a été créé par POTEY
J'ai un script PowerShell qui fonctionnait très bien sous PowerShell 5 mais qui rencontre des erreurs sous la version 6. Mon script fait le ménage dans l'historique des fichiers dans une liste de répertoire alimenté dans un fichiers CSV. 1ère colonne du fichier CSV : répertoire sources, deuxième colonne délai de rétention en jours du répertoire sources., 3ème colonne répertoire de destination, dernière colonne délai de rétention en jours du répertoire de destination. Les fichiers sont transférés par un autre scripts de la source vers la destination (serveur NAS). Le présent script gére les délai de rétention et supprime des deux côtés en fonction du délai de
chacun.
Source Retention_Src Destination Retention_Dest
\\ServeurX\e$\Oracle\admin\AVENIR\dpdump 2 \\ServeurY\DUMP_BDD\AVENIR_Logitud 15
Voici le script :
# Activation du fichier de log
cd C:\Sauvegardes\
$varDate=(get-date -format yyyy-MM-dd)
start-transcript -path "C:\Sauvegardes\log_Gestion_Historique_$varDate.txt"
$csvFile = "C:\Sauvegardes\Historique.csv"
$table = Import-Csv $csvFile -Delimiter ";"
Set-Variable srcSite, dstSite , nameDump, tpsRetSrc, tpsRetDest
foreach ($row in $table) {
Clear-Variable srcSite
Clear-Variable dstSite
Clear-Variable tpsRetSrc
Clear-Variable tpsRetDest
$srcSite = $row.Source
$dstSite = $row.Destination
$tpsRetSrc= $Row.Retention_Src
$tpsRetDest= $Row.Retention_Dest
ADD-content -Path C:\Sauvegardes\log_Gestion_Historique_$varDate.txt -value "Fichiers_supprimés_sur $srcSite"
Get-ChildItem $srcSite -Recurse -Force -ea 0 |
? {!$_.PsIsContainer -and $_.LastwriteTime -lt (Get-Date).AddDays(-$tpsRetSrc)} |
ForEach-Object {
$_ | del -Force
$_.FullName | Out-File C:\Sauvegardes\log_Gestion_Historique_$varDate.txt -Append
}
ADD-content -Path C:\Sauvegardes\log_Gestion_Historique_$varDate.txt -value "Fichiers_supprimés_sur $dstSite"
Get-ChildItem $dstSite -Recurse -Force -ea 0 |
? {!$_.PsIsContainer -and $_.LastwriteTime -lt (Get-Date).AddDays(-$tpsRetDest)} |
ForEach-Object {
$_ | del -Force
$_.FullName | Out-File C:\Sauvegardes\log_Gestion_Historique_$varDate.txt -Append
}
}
# Rajouter la date de derniére modification/date de création/date dernier accés
# Rajouter le chemin d'où ont été supprimés les fichier.
# Rajouter au nom de fichier de log nom appli + serveur ?
# Désactivation des logs
Stop-Transcript
robocopy C:\Sauvegardes\ \\ServeurY\Dump_BDD\_Logs "deletedbackups$varDate.txt" /MOV
robocopy C:\Sauvegardes\ \\ServeurY\Dump_BDD\_Logs "log_Gestion_Historique_$varDate.txt" /MOV
Voici l'erreur que j'obtiens
PS C:\Sauvegardes> C:\Sauvegardes\Gestion_Historique_BDD.ps1
Transcription démarrée, le fichier de sortie est C:\Sauvegardes\log_Gestion_Historique_2022-05-16.txt
ADD-content : Le processus ne peut pas accéder au fichier 'C:\Sauvegardes\log_Gestion_Historique_2022-05-16.txt', car il est en cours d'utilisation par un autre
processus.
Au caractère C:\Sauvegardes\Gestion_Historique_BDD.ps1:27 : 1
+ ADD-content -Path C:\Sauvegardes\log_Gestion_Historique_$varDate.txt ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : WriteError: (C:\Sauvegardes\..._2022-05-16.txt:String) [Add-Content], IOException
+ FullyQualifiedErrorId : GetContentWriterIOError,Microsoft.PowerShell.Commands.AddContentCommand
....
Entre les deux versions seuls les chemins ont été modifiés.
chacun.
Source Retention_Src Destination Retention_Dest
\\ServeurX\e$\Oracle\admin\AVENIR\dpdump 2 \\ServeurY\DUMP_BDD\AVENIR_Logitud 15
Voici le script :
# Activation du fichier de log
cd C:\Sauvegardes\
$varDate=(get-date -format yyyy-MM-dd)
start-transcript -path "C:\Sauvegardes\log_Gestion_Historique_$varDate.txt"
$csvFile = "C:\Sauvegardes\Historique.csv"
$table = Import-Csv $csvFile -Delimiter ";"
Set-Variable srcSite, dstSite , nameDump, tpsRetSrc, tpsRetDest
foreach ($row in $table) {
Clear-Variable srcSite
Clear-Variable dstSite
Clear-Variable tpsRetSrc
Clear-Variable tpsRetDest
$srcSite = $row.Source
$dstSite = $row.Destination
$tpsRetSrc= $Row.Retention_Src
$tpsRetDest= $Row.Retention_Dest
ADD-content -Path C:\Sauvegardes\log_Gestion_Historique_$varDate.txt -value "Fichiers_supprimés_sur $srcSite"
Get-ChildItem $srcSite -Recurse -Force -ea 0 |
? {!$_.PsIsContainer -and $_.LastwriteTime -lt (Get-Date).AddDays(-$tpsRetSrc)} |
ForEach-Object {
$_ | del -Force
$_.FullName | Out-File C:\Sauvegardes\log_Gestion_Historique_$varDate.txt -Append
}
ADD-content -Path C:\Sauvegardes\log_Gestion_Historique_$varDate.txt -value "Fichiers_supprimés_sur $dstSite"
Get-ChildItem $dstSite -Recurse -Force -ea 0 |
? {!$_.PsIsContainer -and $_.LastwriteTime -lt (Get-Date).AddDays(-$tpsRetDest)} |
ForEach-Object {
$_ | del -Force
$_.FullName | Out-File C:\Sauvegardes\log_Gestion_Historique_$varDate.txt -Append
}
}
# Rajouter la date de derniére modification/date de création/date dernier accés
# Rajouter le chemin d'où ont été supprimés les fichier.
# Rajouter au nom de fichier de log nom appli + serveur ?
# Désactivation des logs
Stop-Transcript
robocopy C:\Sauvegardes\ \\ServeurY\Dump_BDD\_Logs "deletedbackups$varDate.txt" /MOV
robocopy C:\Sauvegardes\ \\ServeurY\Dump_BDD\_Logs "log_Gestion_Historique_$varDate.txt" /MOV
Voici l'erreur que j'obtiens
PS C:\Sauvegardes> C:\Sauvegardes\Gestion_Historique_BDD.ps1
Transcription démarrée, le fichier de sortie est C:\Sauvegardes\log_Gestion_Historique_2022-05-16.txt
ADD-content : Le processus ne peut pas accéder au fichier 'C:\Sauvegardes\log_Gestion_Historique_2022-05-16.txt', car il est en cours d'utilisation par un autre
processus.
Au caractère C:\Sauvegardes\Gestion_Historique_BDD.ps1:27 : 1
+ ADD-content -Path C:\Sauvegardes\log_Gestion_Historique_$varDate.txt ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : WriteError: (C:\Sauvegardes\..._2022-05-16.txt:String) [Add-Content], IOException
+ FullyQualifiedErrorId : GetContentWriterIOError,Microsoft.PowerShell.Commands.AddContentCommand
....
Entre les deux versions seuls les chemins ont été modifiés.
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 1778
- Remerciements reçus 21
il y a 1 an 4 mois #32283
par Philippe
Réponse de Philippe sur le sujet Pb entre Version 4 et 5 de PowerShell
salut potey
il semble que ton fichier 'C:\Sauvegardes\log_Gestion_Historique_2022-05-16.txt' soit ouvert par un autre programme
sans doute excel !
il semble que ton fichier 'C:\Sauvegardes\log_Gestion_Historique_2022-05-16.txt' soit ouvert par un autre programme
sans doute excel !
Connexion ou Créer un compte pour participer à la conversation.
- POTEY
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 2
- Remerciements reçus 0
il y a 1 an 4 mois #32288
par POTEY
Réponse de POTEY sur le sujet Pb entre Version 4 et 5 de PowerShell
Le fichier C:\Sauvegardes\log_Gestion_Historique_2022-05-16.txt n'est pas ouvert par excel. Excel ouvre le fichier CSV qui contient les données de variables serveur et temps de rétention (C:\Sauvegardes\Historique.csv).
Le fichier C:\Sauvegardes\log_Gestion_Historique_2022-05-16.txt est créé pour y logger les informations de suppression de fichier (localisation et nom).
Ce même script fonctionne sur un autre serveur avec une version plus ancienne de powershell. Ce sont juste les noms de chemin qui ont été modifiés.
Le fichier C:\Sauvegardes\log_Gestion_Historique_2022-05-16.txt est créé pour y logger les informations de suppression de fichier (localisation et nom).
Ce même script fonctionne sur un autre serveur avec une version plus ancienne de powershell. Ce sont juste les noms de chemin qui ont été modifiés.
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6294
- Remerciements reçus 67
il y a 1 an 4 mois #32291
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Pb entre Version 4 et 5 de PowerShell
Salut
Start-Transcript verrouille le fichier ( 'ouvert' en exclusif pour des ajouts ):Sinon pour ceci :Ce n'est pas vraiment des logs, on enregistre toutes les commandes exécutées.
Revoit ton mécanisme de log.
Start-Transcript verrouille le fichier ( 'ouvert' en exclusif pour des ajouts ):
start-transcript -path "C:\temp\log.txt"
#Transcript started, output file is C:\temp\log.txt
ADD-content -Path "C:\temp\log.txt" -value "Fichiers_supprimés_sur $srte"
#ADD-content : The process cannot access the file 'C:\temp\log.txt' because it is being used by another process.
# Désactivation des logs
Stop-Transcript
Revoit ton mécanisme de log.
Tutoriels 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
- Pb entre Version 4 et 5 de PowerShell