Résolu Transférer une arborescence en excluant certains dossiers et fichiers

Plus d'informations
il y a 3 ans 5 mois #30064 par Yohann Journiac
Bonjour,
Je m'attaque depuis 2 jours sur un transfert d'arborescence par utilisateurs pour une migration d'un Samba4 vers ActiveDirectory.
Toute la partie des comptes et ACL sont OK mais je traine sur la copie.

Voici un extrait
$source = "\\samba4\share$\users"
$destination = "\\windows\utilisateur$"
$exclure = @("*.mov", "*.mp4")
Get-ChildItem $source -Directory | Where-Object {
        !($_.FullName.contains("Downloads")) `
        -and !($_.FullName.contains("Shotcut")) `
        -and !($_.FullName.contains('$RECYCLE.BIN')) `
        -and !($_.FullName.contains("EA Games")) `
        -and !($_.FullName.contains("Mes sources de données")) `
        -and !($_.FullName.contains("Modèles Office personnalisés")) 
    } | Copy-Item -destination $destination -Recursive -Exclude $exclure -Force

Seulement ça ne filtre pas au delà de la racine ou alors je ne conserve pas la structure.
J'ai bien penser a demander aux copains Google/Bing mais au bout de plusieurs page, je ne trouve pas de réelles solution.
Que me conseillez-vous ?

Merci par avance et bonne soirée.

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

Plus d'informations
il y a 3 ans 5 mois - il y a 3 ans 5 mois #30065 par Yohann Journiac
Au final, j'ai du poster trop vite.
$from = "\\samba4\share$\users"
$to = "\\windows\utilisateur$"
$exclude = @("*.mov", "*.mp4")
$excludeMatch = @("Downloads", "Shotcut", "EA Games", "My Games", "Mes sources de données", "Modèles Office personnalisés", '$RECYCLE.BIN')
[regex] $excludeMatchRegEx = ‘(?i)‘ + (($excludeMatch |foreach {[regex]::escape($_)}) –join “|”) + ‘’
Get-ChildItem -Path $from -Recurse -Exclude $exclude | 
 where { $excludeMatch -eq $null -or $_.FullName.Replace($from, "") -notmatch $excludeMatchRegEx} |
 Copy-Item -Destination {
  if ($_.PSIsContainer) {
   Join-Path $to $_.Parent.FullName.Substring($from.length)
  } else {
   Join-Path $to $_.FullName.Substring($from.length)
  }
 } -Force -Exclude $exclude
Semble fonctionner en conservant la structure et sans recopier les indésirables.
Dernière édition: il y a 3 ans 5 mois par Arnaud Petitjean.

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

Temps de génération de la page : 0.072 secondes
Propulsé par Kunena