Progreso del elemento de copia de PowerShell

Migel Hewage Nimesha 20 junio 2023
Progreso del elemento de copia de PowerShell

La copia de archivos es una actividad habitual que implica la transferencia de uno o más archivos desde el origen al destino. El origen y el destino pueden ser el mismo host o dos hosts diferentes.

El Copy-Item es uno de los cmdlets básicos que todo usuario de PowerShell utiliza para copiar archivos de un lugar a otro. El único inconveniente de Copy-Item es que no muestra el progreso de la operación como una barra de progreso o un porcentaje.

El cmdlet Start-BitsTransfer se vuelve útil cuando tiene una gran cantidad de archivos con los que trabajar, y lo bueno es que muestra una barra de progreso que indica el progreso de la operación de copia.

Este artículo se centrará en el cmdlet Start-BitsTransfer para copiar archivos desde el origen al destino.

Use Start-BitsTransfer para copiar archivos en PowerShell

El cmdlet Start-BitsTransfer inicializa un trabajo BITS para copiar uno o más archivos desde el origen al destino sin problemas. Por lo general, PowerShell deja de ser interactivo cuando el cmdlet ha inicializado el trabajo de BITS.

Además, el cmdlet acepta varios argumentos opcionales para mejorar la funcionalidad de copia. La siguiente es la sintaxis genérica del cmdlet Start-BitsTransfer.

Start-BitsTransfer
     [-Asynchronous]
     [-Dynamic]
     [-CustomHeadersWriteOnly]
     [-Authentication <String>]
     [-Credential <PSCredential>]
     [-Description <String>]
     [-HttpMethod <String>]
     [[-Destination] <String[]>]
     [-DisplayName <String>]
     [-Priority <String>]
     [-TransferPolicy <CostStates>]
     [-ACLFlags <ACLFlagValue>]
     [-SecurityFlags <SecurityFlagValue>]
     [-UseStoredCredential <AuthenticationTargetValue>]
     [-ProxyAuthentication <String>]
     [-ProxyBypass <String[]>]
     [-ProxyCredential <PSCredential>]
     [-ProxyList <Uri[]>]
     [-ProxyUsage <String>]
     [-RetryInterval <Int32>]
     [-RetryTimeout <Int32>]
     [-MaxDownloadTime <Int32>]
     [-Source] <String[]>
     [-Suspended]
     [-TransferType <String>]
     [-CustomHeaders <String[]>]
     [-NotifyFlags <NotifyFlagValue>]
     [-NotifyCmdLine <String[]>]
     [-CertStoreLocation <CertStoreLocationValue>]
     [-CertStoreName <String>]
     [-CertHash <Byte[]>]
     [-WhatIf]
     [-Confirm]
     [<CommonParameters>]

El argumento TransferType se utiliza para especificar la dirección de la operación de copia. Puede ser una descarga o una carga.

Vamos a crear una carpeta llamada códigos en la unidad D con casi 300 archivos de texto. Además, crearemos otra carpeta vacía llamada copiedfiles.

A continuación, el comando Start-BitsTransfer se usa para copiar archivos desde la carpeta de origen codes a la carpeta de destino copiedfiles. Una cosa para recordar es importar el módulo BitsTransfer por adelantado.

Import-Module BitsTransfer
Start-BitsTransfer -Source "D:\codes\*.txt" -Destination "D:\copiedfiles\" -TransferType Download

Producción:

Transferencia de bits de inicio

Como puede ver en la figura anterior, la barra de progreso aparece cuando comienza la operación de copia. Este es un indicador muy útil para que los usuarios finales se hagan una idea del progreso de la operación.

Migel Hewage Nimesha avatar Migel Hewage Nimesha avatar

Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.