Файл загрузки Powershell не работает должным образом - PullRequest
2 голосов
/ 14 ноября 2010

Я пытаюсь написать скрипт powershell, который установит переменную каталога загрузки на основе текущего каталога и загрузит файл в этот каталог.

Код, который у меня есть:

cd downloads
$DevDownloadDirectory = [IO.Directory]::GetCurrentDirectory

$clnt = New-Object System.Net.WebClient

# download and extract the file
$url = “fileurl/file.zip"
$file = "$DevDownloadDirectory\file.zip"
$clnt.DownloadFile($url,$file)

Проблема, которую я получаю, заключается в том, что всякий раз, когда я получаю эту часть кода, она выдает:

Исключение вызывает "DownloadFile" с аргументом (ами) "2": "Исключение произошел во время запроса WebClient. "В C: \ directory \ script.ps1: 462 символ: 20

  • $ clnt.DownloadFile <<<< ($ url, $ file) </li>
  • CategoryInfo: NotSpecified: (:) [], MethodInvocationException
  • FullyQualifiedErrorId: DotNetMethodException

Может ли кто-нибудь помочь мне выяснить, почему это происходит?

Ответы [ 2 ]

2 голосов
/ 14 ноября 2010
$DevDownloadDirectory = [IO.Directory]::GetCurrentDirectory

Должно быть

$DevDownloadDirectory = [IO.Directory]::GetCurrentDirectory()

GetCurrentDirectory () является методом, и если вы не используете «()», он просто вернет то же имя, но не текущий каталог.

0 голосов
/ 24 мая 2019
#Dowload File
function Download-File-Func($url, $targetFile)
{
    "Downloading $url"
    $uri = New-Object "System.Uri" "$url"
    $request = [System.Net.HttpWebRequest]::Create($uri)
    $request.set_Timeout(600000) #10 minutes
    $response = $request.GetResponse()
    $totalLength = [System.Math]::Floor($response.get_ContentLength()/1024)
    $responseStream = $response.GetResponseStream()
    $targetStream = New-Object -TypeName System.IO.FileStream -ArgumentList $targetFile, Create
    $buffer = new-object byte[] 10KB
    $count = $responseStream.Read($buffer,0,$buffer.length)
    $downloadedBytes = $count
    while ($count -gt 0)
        {
        [System.Console]::CursorLeft = 0
        [System.Console]::Write("Downloaded {0}K of {1}K", [System.Math]::Floor($downloadedBytes/1024), $totalLength)
        $targetStream.Write($buffer, 0, $count)
        $count = $responseStream.Read($buffer,0,$buffer.length)
        $downloadedBytes = $downloadedBytes + $count
    }

    "Finished Download"
    $targetStream.Flush()
    $targetStream.Close()
    $targetStream.Dispose()
    $responseStream.Dispose()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...