18

PowerShell を使用して Web サイトにログインし、ファイルをダウンロードしようとしています。

ただし、PS に資格情報を適切に渡すことはできません。

ここに私のPSがあります:

$webclient = new-object System.Net.WebClient
$webclient.Credentials = new-object System.Net.NetworkCredential("username","password","domain")
$webpage = $webclient.DownloadString("url goes here")

IE でサイトにアクセスしたときに表示されるログイン ボックスは次のとおりです。 ここに画像の説明を入力

4

5 に答える 5

16

これが私が仕事をするようになったものです。重要な部分は CredentialCache の「基本」だと思います

$webclient = new-object System.Net.WebClient
$credCache = new-object System.Net.CredentialCache
$creds = new-object System.Net.NetworkCredential("un","pw")
$credCache.Add("url", "Basic", $creds)
$webclient.Credentials = $credCache
$webpage = $webclient.DownloadString("url")
于 2012-09-05T14:56:16.507 に答える
7

Invoke-WebRequestの代わりに使用する場合WebClient:

$securepassword = ConvertTo-SecureString "password" -AsPlainText -Force
$credentials = New-Object System.Management.Automation.PSCredential("username", $securepassword)
Invoke-WebRequest -Uri "url goes here" -Credential $credentials

Douglas Tarr によるこのブログ記事に基づいてコードを作成しました。この記事ではユーザー名とパスワードが混同されていますが、サンプルでは修正されていることに注意してください。

于 2014-12-04T23:38:49.283 に答える
5

何らかの理由で、これらのソリューションを機能させることができませんでした (Win 10 で PowerShell 5 を使用)。私は PS をあまり使用しないため、これは明らかな、ばかげた状況である可能性があります。しかし、FWIW これは、Authorization ヘッダーを手動で設定することで、これを機能させることができた方法です。

$url = "{url here}"
$username = "{username here}"
$password = "{password here}"

$b = [System.Text.Encoding]::UTF8.GetBytes($username + ":" + $password)
$p = [System.Convert]::ToBase64String($b)

$creds = "Basic " + $p

Invoke-WebRequest -Uri $url -Headers @{"Authorization"=$creds} 

何らかの理由で、ここでの他の回答はリクエストを作成しましたが、Authorization ヘッダーは送信されませんでした。

于 2016-06-09T13:03:08.780 に答える
1

これが私がそれをした方法です、

最初に、powershell スクリプトを含むdownload.ps1ファイルを作成し、

次に、バッチ ファイルを使用してこのスクリプトを実行します。

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -File  C:\Users\SS\Desktop\download.ps1

これは PowerShell スクリプトです。

    $Username = 'Domain\user'
    $Password = 'pass'
    $Url = "http://google.com/target/filename.zip"
    $Path = "C:\path\to\downloaded\file\filename.zip"
    $WebClient = New-Object System.Net.WebClient
    $WebClient.Credentials = New-Object System.Net.Networkcredential($Username, $Password)
    $WebClient.DownloadFile( $url, $path )
于 2016-01-12T14:41:49.500 に答える
-1

あなたが持っているものはうまくいくはずです(他のサイトでコードを試してください)。通常、無効なユーザー名/パスワードにより、コードは 401 エラーで失敗します (Windows セキュリティ ログイン ウィンドウではありません)。この問題は、 Windows 統合認証を必要とする Web サイトに関連している可能性があります

于 2012-09-05T14:37:49.577 に答える