Powershell. Función para saber la tasa de transmisión. Velocidad de red

Función para calcular la tasa de copia en MBps de una carpeta a otra. Usado para carpetas de red.

 

Es importante contar con el -Recurse en la función Get-ChildItem $destDir/ -Recurse. Sin ello, no se tienen en cuenta los contenidos de carpetas anidadas.

Existen errores reportados sobre el cmd-let remove-item. Por ello, la línea de borrado se pasa desde un get-childitem.

Function Copy_Folder ($src, $destDir)
{
# Remove old data:
get-childitem $destDir\* -recurse | remove-item -recurse -force

# Create destination:
if (!(Test-Path -path $destDir))
{ New-Item $destDir -itemtype directory -force }
# Copy files:
$date1=Get-Date
copy-item $src $destDir\ -force -recurse -verbose
$date2=Get-Date
# $date1 and $date2 some dates, dates difference:
$duration=($date1-$date2).duration()
# Size of data
$datasize = (Get-ChildItem $destDir/ -Recurse | Measure-Object -property length -sum).sum / 1MB
$mb=”{0:N2}” -f ($datasize) + “MB”
# Transmission rate
$transmision_rate=”{0:N2}” -f ($datasize / ($duration.TotalSeconds)) + “MBps”
$log_line=”`n $src $duration secs $mb $transmision_rate ”
Add-Content $log $log_li$src=ne
Write-host $log_line
}