Set-ExecutionPolicy -Scope LocalMachine Unrestricted -Force clear $user = $env:USERPROFILE $documents = "$user\Documents\*" $images = "$user\Pictures\*" if (Test-Path -Path "\\192.168.51.62\Sauvegarde\") { New-Item -Path "\\192.168.51.62\Sauvegarde\$env:USERNAME" -ItemType Directory -ErrorAction SilentlyContinue if (Test-Path $documents) { New-Item -Path "\\192.168.51.62\Sauvegarde\$env:USERNAME\Documents" -ItemType Directory -ErrorAction SilentlyContinue Copy-Item -Recurse "C:\Users\$env:USERNAME\Documents\*" -Destination "\\192.168.51.62\Sauvegarde\$env:USERNAME\Documents\" | Where-Object { $_.Extension -in @(".png" , ".txt" , ".xls" , ".xlsx" , ".ppt" , ".pptx" , ".odt" , ".ods", ".odp" , ".jpg" , ".xml" , ".gif" ) } } if (Test-Path $images) { New-Item -Path "\\192.168.51.62\Sauvegarde\$env:USERNAME\Pictures" -ItemType Directory -ErrorAction SilentlyContinue Copy-Item -Recurse "\\192.168.51.62\Users\$env:USERNAME\Pictures\*" -Destination "C:\Sauvegarde\$env:USERNAME\Pictures" | Where-Object { $_.Extension -in @(".png" , ".txt" , ".xls" , ".xlsx" , ".ppt" , ".pptx" , ".odt" , ".ods", ".odp" , ".jpg" , ".xml" , ".gif" ) } } } Remove-Item -Recurse "$env:USERPROFILE\Documents\" Remove-Item -Recurse "$env:USERPROFILE\Pictures\" **************************************************************************************************************************************************************************************************** # Assurez-vous d'avoir le module PSFTP installé et importé Install-Module -Name PSFTP -Force Import-Module -Name PSFTP Set-ExecutionPolicy -Scope LocalMachine Unrestricted -Force clear # Variables utilisateur et chemins des fichiers $user = $env:USERPROFILE $documents = "$user\Documents\*" $images = "$user\Pictures\*" # Détails du serveur FTP $ftpServer = "ftp://votre_serveur_ftp.com" # Remplacez par l'adresse de votre serveur FTP $ftpUser = "votre_utilisateur" # Remplacez par votre nom d'utilisateur FTP $ftpPassword = "votre_mot_de_passe" # Remplacez par votre mot de passe FTP # Fonction pour envoyer des fichiers au serveur FTP function Send-ToFtp { param ( [string]$localPath, [string]$ftpPath ) $session = New-FTPConnection -Server $ftpServer -Credentials (New-Object -TypeName PSCredential -ArgumentList $ftpUser, (ConvertTo-SecureString -String $ftpPassword -AsPlainText -Force)) Set-FTPItem -Session $session -LocalPath $localPath -RemotePath $ftpPath Remove-FTPConnection -Session $session } # Extensions de fichiers à copier $extensions = @(".png", ".txt", ".xls", ".xlsx", ".ppt", ".pptx", ".odt", ".ods", ".odp", ".jpg", ".xml", ".gif") # Fonction pour filtrer et envoyer des fichiers function Filter-And-SendFiles { param ( [string]$sourcePath, [string]$ftpDestination ) $files = Get-ChildItem -Path $sourcePath -Recurse | Where-Object { $_.Extension -in $extensions } foreach ($file in $files) { $relativePath = $file.FullName.Substring($sourcePath.Length).TrimStart("\") $ftpPath = Join-Path -Path $ftpDestination -ChildPath $relativePath Send-ToFtp -localPath $file.FullName -ftpPath $ftpPath } } # Vérifie et crée les dossiers sur le serveur FTP if (Test-Path $documents) { $ftpDocumentsPath = "/Sauvegarde/$env:USERNAME/Documents" Filter-And-SendFiles -sourcePath $documents -ftpDestination $ftpDocumentsPath } if (Test-Path $images) { $ftpPicturesPath = "/Sauvegarde/$env:USERNAME/Pictures" Filter-And-SendFiles -sourcePath $images -ftpDestination $ftpPicturesPath } # Suppression des fichiers locaux après transfert Remove-Item -Recurse "$env:USERPROFILE\Documents\*" -Force Remove-Item -Recurse "$env:USERPROFILE\Pictures\*" -Force **************************************************************************************************************************************************************************************************************** Set-ExecutionPolicy Unrestricted LocalMachine -Force $username = "user" $password = ConvertTo-SecureString "user" -AsPlainText -Force $credentials = New-Object System.Management.Automation.PSCredential ($username, $password) Set-FTPConnection -Credentials $credentials -Server 192.168.1.100:21 -Session test -ignoreCert -UseBinary -KeepAlive $Session = Get-FTPConnection -Session test #Get-FTPChildItem -Session $Session -Path "/" -Recurse #Get-FTPItem -Path "/Sauvegarde/test.docx/" -LocalPath C:\test -Session $Session -Verbose -RecreateFolders #Get-ChildItem "C:\test" | Get-FTPItem -Session $Session -Path /Sauvegarde/ Get-FTPChildItem -Session $Session -Path "/Sauvegarde/" | Get-FTPItem -Session $Session -LocalPath "C:\test\" -RecreateFolders -Verbose