Powershell - Utiliser le transfert de fichiers par BITS

Pour me soutenir, vous pouvez vous abonner à la chaîne, partager et liker les vidéos, désactiver votre bloqueur de pub, acheter mes plans 3D ou encore faire un don ou vous abonnez sur Ko-Fi. Merci!

Bonjour,

BITS (Background Intelligent Transfer Service) est un service Windows qui permet d’effectuer des transferts de données. Il permet de : - Définir une priorité de bande passante réseau - Suspendre et reprendre un transfert - De transférer en mode synchrone ou asynchrone - Télécharger ou envoyer des données - Reprendre le transfert après un redémarrage

# Effectuer un téléchargement avec BITS
$Params = @{
Source = 'https://github.com/PowerShell/PowerShell/releases/download/v7.2.2/PowerShell-7.2.2-win-x64.msi'
Destination = 'd:\PowerShell-7.2.2-win-x64.msi'
DisplayName = 'Test'
Priority = 'Normal'
}
$job = Start-BitsTransfer @Params -Asynchronous
# Par défaut, le transfert BITS s'effectue en mode synchrone avec priorité haute (foreground).
# Pas de caractère générique pour les adresses en HTTP ou HTTPS
# Lister les transferts
Get-BitsTransfer
# Afficher les jobs BITS de tout le monde
Get-BitsTransfer -AllUsers
# Suspendre un transfert
$job | Suspend-BitsTransfer
# Reprendre un transfert
$job | Resume-BitsTransfer -Asynchronous
# Par défaut, le transfert est relancé en mode synchrone même s'il était lancé en asynchrone initialement.
# Vous pouvez reprendre le transfert après un redémarrage
# Compléter les transferts terminés
Get-BitsTransfer | Where-Object Jobstate -eq Transferred | Complete-BitsTransfer
# En mode asynchrone, un fichier temporaire est créé, Complete-BitsTranfer permet de générer le fichier final.
# Si le fichier final est déjà présent, il ne sera pas écrasé et restera dans l'état fichier temporaire
# Récupérer un fichier à partir d'un partage
$DriveParams = @{
name = 'drive'
PSProvider = 'FileSystem'
Root = '\\10.0.0.253\iso'
cred = Get-Credential }
New-PSDrive @DriveParams
# Il est nécessaire de créer un lecteur sinon une erreur chemin non trouvé est renvoyé
# pour le chemin SMB dans Start-BitsTransfer
$Params = @{
Source = 'drive:\fr-fr_windows_11_business_editions_x64_dvd_95aa5eee.iso'
Destination = 'c:\'
DisplayName = 'Test2'
}
Start-BitsTransfer @Params -Asynchronous
# Il n'est pas nécessaire de spécifier le nom du fichier de destination pour les chemins UNC
# Ajouter des fichiers supplémentaires à une tâche
$Params = @{
Source = 'drive:\fr-fr_windows_server_2022_x64_dvd_9f7d1adb.iso'
Destination = 'c:\'
}
Get-BitsTransfer -Name test2 | Add-BitsFile @Params
Get-BitsTransfer -Name test2 | Select-Object displayname, filelist
Get-BitsTransfer | Complete-BitsTransfer
# Envoyer un fichier local sur un partage
$Params = @{
Source = 'C:\PowerShell-7.2.2-win-x64.msi'
Destination = '\\10.0.0.253\iso\'
DisplayName = 'Test3'
}
Start-BitsTransfer @Params -Asynchronous
Get-BitsTransfer | Complete-BitsTransfer
# Spécifier des paramètres d'authentification (Basic, Digest, NTLM, Negotiate ou Passport)
Start-BitsTransfer -source http://10.0.0.1/fichier.iso -destination c:\temp\fichier.iso `
-asynchronous -Authentication NTLM -Credential (Get-Credential)
# Modifier un transfert en cours, la priorité dans cet exemple :
$Job | Set-BitsTransfer -Priority 'Foreground'
# Supprimer la tâche
$Job | Remove-BitsTransfer
# Supprimer toutes les tâches de tous les utilisateurs (en cours ou non)
Get-BitsTransfer -Allusers | Remove-BitsTransfer -Confirm:$False
# Transférer plusieurs fichiers HTTP(S) à partir d'un CSV
# Créer un fichier (liste.csv dans l'exemple) avec le contenu suivant :
Source,Destination
https://serveur/fichier1.txt,c:\dossier\fichier1.txt
https://serveur/fichier2.txt,c:\dossier\fichier2.txt
Import-CSV liste.csv | Start-BitsTransfer -Asynchronous
Get-BitsTransfer | Select-Object displayname,filelist
# Envoyer plusieurs fichiers sur un partage (ou l'inverse)
# Vous pouvez utiliser des caractères génériques avec les chemins UNC
$Params = @{
Source = 'C:\demo\*'
Destination = '\\10.0.0.253\iso\'
DisplayName = 'Test6'
}
Start-BitsTransfer @Params -Asynchronous
Get-BitsTransfer | Complete-BitsTransfer

Liens en relation