PS sauvegarder dans 2 repertoires différents
adgm1 Messages postés 289 Date d'inscription Statut Membre Dernière intervention -
bonjour
je cherche un moyen d'ajouter un deuxieme emplacment de sauvegarde de mes GPO sur un serveur nas (\\srv-nas\gpo_backup). J'ai configuré le script actuel pour une sauvegarde dans le serveur Controleur de domaine, disque D:
Comment sauvegarder en plus dans un 2eme $backupPath en utilisant le même script?
Merci
$ErrorActionPreference = "Stop" $folderName = (Get-Date).tostring("yyyy-MM-dd") $backupPath = "D:\GPO BACKUP\$folderName" $domainName = (Get-ADDomain).dnsroot try { # Test si le dossier de sauvegarde des GPO existe, sinon on le crée if (-not (Test-Path -Path $backupPath)) { Write-Host "Le dossier de sauvegarde n'existe pas, création du dossier en cours" -ForegroundColor Yellow New-Item -Path $backupPath -ItemType Directory -ErrorAction Stop | Out-Null } # Récupération de toutes les GPOs Write-Host "Collecte de toutes les GPOs" -ForegroundColor Cyan $AllGpos = Get-GPO -All -Domain $domainName -ErrorAction Stop # Pour chaque GPO on créé un dossier de backup et on effectue la sauvegarde foreach ($gpo in $AllGpos) { $gpoBackupFolder = Join-Path -Path $backupPath -ChildPath $gpo.DisplayName if (-not (Test-Path -Path $gpoBackupFolder)) { Write-Host "Création du dossier $gpoBackupFolder" -ForegroundColor Green New-Item -Path $gpoBackupFolder -ItemType Directory -ErrorAction Stop | Out-Null } else { Write-Warning "Le dossier $gpoBackupFolder existe déjà " } Write-Host "Backup de la GPO : $($gpo.DisplayName)" -ForegroundColor Green Backup-GPO -Guid $gpo.Id -Path $gpoBackupFolder -ErrorAction Stop | Out-Null Write-Host "Export HTML de la GPO : $($gpo.DisplayName)" -ForegroundColor Green Get-GPOReport -Guid $gpo.Id -ReportType Html -Path $gpoBackupFolder\$($gpo.DisplayName).html -ErrorAction Stop | Out-Null } Write-Host "Toutes les GPOs ont été sauvegardées avec succès !" -ForegroundColor Green } catch { Write-Host "Une erreur s'est produite : $($_.Exception.Message)" -ForegroundColor Red }
- PS sauvegarder dans 2 repertoires différents
- Supercopier 2 - Télécharger - Gestion de fichiers
- Sauvegarder favoris chrome - Guide
- 2 ecran pc - Guide
- Sauvegarder sms iphone - Guide
- Sauvegarder favoris firefox - Guide
2 réponses
Bonjour adgm1,
Tu peux créer un array pour mettre tes dossiers, exemple :
$backupPaths = @("D:\GPO BACKUP\$folderName", "D:\chemin\dossier\$folderName")
Ensuite, tu peux faire un ForEach-Object dans ton foreach afin de parcourir l'array des dossiers :
$backupPaths | ForEach-Object {
$gpoBackupFolder = Join-Path -Path $_ -ChildPath $gpo.DisplayName
if (-not (Test-Path -Path $gpoBackupFolder)) {
Write-Host "Création du dossier $gpoBackupFolder" -ForegroundColor Green
New-Item -Path $gpoBackupFolder -ItemType Directory -ErrorAction Stop | Out-Null
} else {
Write-Warning "Le dossier $gpoBackupFolder existe déjà "
}
Write-Host "Backup de la GPO : $($gpo.DisplayName)" -ForegroundColor Green
Backup-GPO -Guid $gpo.Id -Path $gpoBackupFolder -ErrorAction Stop | Out-Null
Write-Host "Export HTML de la GPO : $($gpo.DisplayName)" -ForegroundColor Green
Get-GPOReport -Guid $gpo.Id -ReportType Html -Path $gpoBackupFolder\$($gpo.DisplayName).html -ErrorAction Stop | Out-Null
}
La différence est quand dans le ForEach-Object, $backupPath prend la valeur de $_ (résultat du ForEach-Object qui parcour l'array).
Le fait d'utiliser un array te permet d'ajouter autant de dossier que tu le souhaites.
$backupPaths = @("D:\GPO BACKUP\$folderName", "D:\chemin\dossier\$folderName", "D:\autre\dossier\backup\$folderName")
Je n'ai pas testé le code, j'y vais selon mes connaissances ;)
GinToniik
merci pour cette reponse. pour le moment je vois pas trop ou je dois insérer le foreach-Object dans mon scipt. Pas grave je programmerai 2 script distinct pour sauvegarder à 2 endroits différents.
J'ai par contre une erreur qui se produit à priori à cause d'un nom de GPO mal orthographié mais je n'arrive pas à l'identifier (j'ai une centaine de GPO). Le message est "La valeur n'est pas comprise dans la plage attendue."
Comment je peux savoir de quel GPO il s'agit?
merci