Я создал скрипт для загрузки файлов с FTP-сервера. Сценарий работает со всеми файлами, которые я пытался загрузить, кроме файлов, которые содержат #
. После некоторых исследований я не могу найти решение этой проблемы. Мой код для загрузки файла указан ниже.
function Get-FtpFile
{
Param ([string]$fileUrl, $credentials, [string]$destination)
try
{
$FTPRequest = [System.Net.FtpWebRequest]::Create($fileUrl)
if ($credentials)
{
$FTPRequest.Credentials = $credentials
}
$FTPRequest.Method = [System.Net.WebRequestMethods+Ftp]::DownloadFile
$FTPRequest.UseBinary = $true
# Send the ftp request
$FTPResponse = $FTPRequest.GetResponse()
# Get a download stream from the server response
$ResponseStream = $FTPResponse.GetResponseStream()
# Create the target file on the local system and the download buffer
$LocalFile = New-Object IO.FileStream ($destination,[IO.FileMode]::Create)
[byte[]]$ReadBuffer = New-Object byte[] 1024
# Loop through the download
do {
$ReadLength = $ResponseStream.Read($ReadBuffer,0,1024)
$LocalFile.Write($ReadBuffer,0,$ReadLength)
}
while ($ReadLength -ne 0)
$LocalFile.Close()
}
catch [Net.WebException]
{
return "Unable to download because: $($_.exception)"
}
}
Я попытался использовать WebRequest.DownloadFile()
вместо этого, и он все еще не работает с файлами, которые содержат #
, я также попытался переименовать файл, используя метод переименования FtpWebRequest
, который также не работал.
Кто-нибудь знает какое-либо решение или способ решения этой проблемы?