Add-Type -Assembly 'System.IO.Compression.FileSystem' function DownloadAca { param( [Parameter( Mandatory=$True, Position = 0 )] [string] $firstArg, [Parameter( Mandatory=$True, ValueFromRemainingArguments=$true, Position = 1 )][string[]] $listArgs ) $urldef = $firstArg $count = 0 foreach($listArg in $listArgs) { $url = $urldef + $listArg $output = "$PSScriptRoot\$listArg" $Time = [System.Diagnostics.Stopwatch]::StartNew() write-Output "Download $url to $output" #Invoke-WebRequest -Uri $url -OutFile $output (New-Object System.Net.WebClient).DownloadFile($url, $output) #Start-BitsTransfer -Source $url -Destination $output -Asynchronous write-Output "Unblock-File $output" Unblock-File $output write-Output "Expand-Archive $output" #Expand-Archive -Path $output -DestinationPath "$PSScriptRoot" -Force [System.IO.Compression.ZipFile]::ExtractToDirectory($output,"$PSScriptRoot") Remove-Item -Path $output $CurrentTime = $Time.Elapsed write-host $([string]::Format("Time : {0:d2}:{1:d2}:{2:d2} (HH:MM:SS)",$CurrentTime.hours,$CurrentTime.minutes,$CurrentTime.seconds)) $count++ write-output "`n" } } $TotalTime = [System.Diagnostics.Stopwatch]::StartNew() DownloadAca "http://download.aca.nl/aca/Navision/Build/" "3.21.14.zip" $CurrentTime = $TotalTime.Elapsed write-host $([string]::Format("Total: {0:d2}:{1:d2}:{2:d2} (HH:MM:SS)",$CurrentTime.hours,$CurrentTime.minutes,$CurrentTime.seconds)) Read-Host -Prompt "Press Enter to exit." Remove-Item -Path $MyInvocation.MyCommand.Source