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

Plus d'informations
il y a 1 semaine 6 jours #30064 par Juronius
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 1 semaine 6 jours - il y a 3 jours 23 heures #30065 par Juronius
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 jours 23 heures par Arnaud.

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

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