- PowerShell 5.1.17763.592 / Windows Server 2019 версии 1809 (сборка 17763.737)
Я пытаюсь загрузить файл с помощью командлета Invoke-WebRequest
.Файл защищен основной аутентификацией HTTP.Выполнение двухэтапного процесса работает следующим образом:
PS E:\> $cred = Get-Credential
cmdlet Get-Credential at command pipeline position 1
Supply values for the following parameters:
Credential
PS E:\> Invoke-WebRequest -Uri http://example.com/foo.zip -Credential $cred -OutFile $env:TEMP\foo.zip
Попытка передать учетные данные таким образом, чтобы я мог сделать это в одну строку, не удалась:
PS E:\> Get-Credential | Invoke-WebRequest -Uri http://example.com/foo.zip -Credential $_ -OutFile $env:TEMP\foo.zip
cmdlet Get-Credential at command pipeline position 1
Supply values for the following parameters:
Credential
Invoke-WebRequest : Cannot send a content-body with this verb-type.
At line:1 char:18
+ ... redential | Invoke-WebRequest -Uri http://example.com/foo.z ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Invoke-WebRequest], ProtocolViolationException
+ FullyQualifiedErrorId : System.Net.ProtocolViolationException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand
Я гуглилошибка, но единственное, что я могу найти, это Invoke-WebRequest, использующий метод Get, не допускает content-body , но если это основная причина, я не понимаю, почему двухлинейная работа сработает.Я подозреваю, что неправильно понял, как оценивается $_
.