Там какой-либо путь состоит в том, чтобы скопировать действительно большой файл (от одного сервера до другого) в PowerShell И отобразить его прогресс?
Существуют решения там для использования Прогресса Записи в сочетании с цикличным выполнением для копирования многих файлов и прогресса дисплея. Однако я, может казаться, не нахожу ничего, что показало бы прогресс единственного файла.
Какие-либо мысли?
Я не слышал о прогрессе с Copy-Item
. Если вы не хотите использовать какой-либо внешний инструмент, вы можете поэкспериментировать с потоками. Размер буфера варьируется, вы можете попробовать разные значения (от 2kb до 64kb).
function Copy-File {
param( [string]$from, [string]$to)
$ffile = [io.file]::OpenRead($from)
$tofile = [io.file]::OpenWrite($to)
Write-Progress -Activity "Copying file" -status "$from -> $to" -PercentComplete 0
try {
[byte[]]$buff = new-object byte[] 4096
[int]$total = [int]$count = 0
do {
$count = $ffile.Read($buff, 0, $buff.Length)
$tofile.Write($buff, 0, $count)
$total += $count
if ($total % 1mb -eq 0) {
Write-Progress -Activity "Copying file" -status "$from -> $to" `
-PercentComplete ([int]($total/$ffile.Length* 100))
}
} while ($count -gt 0)
}
finally {
$ffile.Dispose()
$tofile.Dispose()
Write-Progress -Activity "Copying file" -Status "Ready" -Completed
}
}
Насколько мне известно, нет. В любом случае я бы не рекомендовал использовать для этого copy-item. Я не думаю, что он был спроектирован так, чтобы быть надежным, как robocopy.exe, для поддержки повторных попыток, которые вам нужны для очень больших копий файлов по сети.