Powershell. ProgressBar для Copy-Item

Для скриптов, в которых копируются файлы большого объема или группы файлов, хочется видеть примерную оценку времени до завершения копирования. Пример функции для этой цели я размещаю ниже

Никаких ограничений, как например в BitsTransfer, я не заметил: можно копировать как отдельные файлы так и папки с файлами.
Помимо графического индикатора прогресса, мы увидим привычный подсчет и вес копируемых файлов с оценочным временем до завершения процесса.

Для использования более простого прогрессбара можно попробовать следующее:

Start-BitsTransfer -Source ‘\\SRV01\dir\file1.mp4’ -Destination ‘C:\file1.mp4’

Сначала объявляем следующую функцию:

function Copy-ItemUsingExplorer{
param(
[string]$source,
[string]$destination,
[int]$CopyFlags
)

$objShell = New-Object -ComObject 'Shell.Application'
$objFolder = $objShell.NameSpace((gi $destination).FullName)
$objFolder.CopyHere((gi $source).FullName,$CopyFlags.ToString('{0:x}'))
}

Затем вызовем эту функцию с указанием ваших значений для Source и Destination:

Copy-ItemUsingExplorer 'E:\Курсы\Администрирование Red Hat Linux' 'C:\'

В результате прогресс копирования будет выводится в привычном всплывающем окне проводника(Explorer.exe)

Добавить комментарий

Ваш адрес email не будет опубликован.