Question Pb entre Version 4 et 5 de PowerShell

Plus d'informations
il y a 4 mois 2 semaines #32282 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.

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

Plus d'informations
il y a 4 mois 2 semaines #32283 par Philippe
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 !

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

Plus d'informations
il y a 4 mois 2 semaines #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.

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

Plus d'informations
il y a 4 mois 2 semaines #32291 par Laurent Dardenne
Salut
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.
Sinon pour ceci :
# Désactivation des logs
Stop-Transcript
Ce n'est pas vraiment des logs, on enregistre toutes les commandes exécutées.
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.075 secondes
Propulsé par Kunena