2017-12-05 18 views
0

Googleでは、特定のChocolateyパッケージをVSTS専用パッケージ管理フィードに格納しています。私はPowerShellでVSTSのフィードから特定のパッケージをダウンロードしようとしています。私は、以下のコマンドを使用しています:$webClient.DownloadFile($url, $fileName)を使用した場合vstsパッケージフィードからファイルをダウンロード

$user = "my-user-id" 

$token = "my-pat-token" 

$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $user,$token))) 

$url = "vsts-package-url" 

$webClient = New-Object System.Net.WebClient 
$webClient.Headers.Add('HttpRequestHeader.Authorization',"Basic $base64AuthInfo") 

はこの後、私はパッケージをダウンロードすることができるはずです。

しかし、ファイルにはダミーテキストが含まれており、サインインすることを期待しており、401の関連情報があります。

基本的にPowerShellコードです。誰も私がこれについてどうすればよいかアドバイスしてもらえますか?私はしたくないインストールパッケージからのフィードは、ダウンロードするだけです。

このプロセスでは、パッケージのURLを最初に準備する必要があるため、これを行うより良い方法があるのだろうかと疑問に思っていました。

答えて

0

authヘッダーを誤って作成しているようです。基本的に、PATでは、ユーザー名は必要ありません。フィード情報ダウンロードする

$pat = 'yourPatHere' 
$bytes = [System.Text.Encoding]::ASCII.GetBytes(":$($pat)") 
$encodedText =[Convert]::ToBase64String($bytes) 

$header = @{Authorization = "Basic $encodedText"} 

あなたはその後、Invoke-WebRequestを使用することができます:

私はこのコードのスニペットのすべての時間を使用し

Invoke-WebRequest -Uri 'https://uri' -Header $header -Method Get 

大体あなたのコードと同じように見えますが、Invoke-WebRequest慣用PowerShell対WebClientを作成しています。最後には関係ありません。

実際にフィードからファイルをダウンロードすることは別の問題です。パッケージは、その特定の種類のフィードに対して標準的なメカニズムによって公開されます。 documentationを参照してください。基本的に、NuGetパッケージが必要な場合は、パッケージ管理からではなく、NuGetフィードからダウンロードします。

+0

ダウンロードしたファイルは、パッケージデータを格納する代わりにjson応答です。私が使用しているパッケージuriは:https://myaccount.feeds.visualstudio.com/DefaultCollection/_apis/Packaging/Feeds/ /Packages//Versions/

関連する問題