I'd make use of BITS. Background Intelligent Transfer Service.
If BitsTransfer module not implemented for your session:
Import-Module BitsTransfer
Sample of using it to transfer a file using a credentials:
$cred = Get-Credential()
$sourcePath = \\server\example\file.txt
$destPath = C:\Local\Destination\
Start-BitsTransfer -Source $sourcePath -Destination $destPath -Credential $cred
Caveat: If you are executing script within a RemotePS session, then BITS is NOT supported.
Get-Help for Start-BitsTransfer:
SYNTAX
Start-BitsTransfer [-Source] <string[]> [[-Destination] <string[]>] [-Asynchronous] [-Authentication <string>] [-Credential <PS
Credential>] [-Description <string>] [-DisplayName <string>] [-Priority <string>] [-ProxyAuthentication <string>] [-ProxyBypass
<string[]>] [-ProxyCredential <PSCredential>] [-ProxyList <Uri[]>] [-ProxyUsage <string>] [-RetryInterval <int>] [-RetryTimeou
t <int>] [-Suspended] [-TransferType <string>] [-Confirm] [-WhatIf] [<CommonParameters>]
More help...
Here is script to create $cred object so you aren't prompted for username/passwod:
#create active credential object
$Username = "user"
$Password = ConvertTo-SecureString ‘pswd’ -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential $Username, $Password