Более длинный пример после этой статьи из WinSCP :
$ErrorActionPreference = 'Stop'
Add-Type -Path "$path\WinSCPnet.dll"
$session = [WinSCP.Session]::new()
$session.Open(New-Object -TypeName WinSCP.SessionOptions -Property @{
Protocol = [WinSCP.Protocol]::Sftp
HostName = 'dlptest.com'
UserName = 'dlpuser@dlptest.com'
Password = 'plaintextpw'
PortNumber = 6969
})
$transferOptions = New-Object -TypeName WinSCP.TransferOptions -Property @{
TransferMode = [WinSCP.TransferMode]::Binary
}
foreach ($file in (Get-ChildItem -Path $path -Filter *.trc))
{
"Uploading $file"
$result = $session.PutFiles($file.FullName, '/', $false, $transferOptions)
try
{
$result.Check()
}
catch
{
"Failed to upload file: $PSItem"
}
}
$session.Dispose()
Ваша схема URI должна включать номер порта, чтобы изменить его по умолчанию, т. Е. ftp://address:port/
Вот ваш сжатый пример:
#requires -Version 5
$webClient = [System.Net.WebClient]::new()
$webClient.Credentials = [System.Net.NetworkCredential]::new('dlpuser@dlptest.com', 'plaintextpw')
foreach ($file in (Get-ChildItem -Path $path -Filter *.trc))
{
"Uploading $file"
$webClient.UploadFile("ftp://ftp.dlptest.com:6969/$file", $file.FullName)
}