1

powershell を使用して監視を行っています。アプリケーションの jnlp が Web サイトに存在し、ダウンロード可能かどうかを確認したいと考えています。.jnlp へのリンクがあり、これまでのところ、.navigate() を使用してファイルをダウンロードしています。

$ie = new-object -com "InternetExplorer.Application"
Try { 
    $ie.navigate("http://bla.com/testApp.jnlp")
} Catch {
    #$_
    $ErrorMessage = $_.Exception.Message
}

無効なファイル名を指定して例外をキャッチしようとしましたが、うまくいきません。また、アプリをダウンロードして、後でファイルを削除して、実際に存在することを確認することも考えましたが、確認するjnlpがたくさんあるため、時間がかかりすぎます。

これを行う別のよりシンプルでエレガントな方法はありますか? テストしたい各ファイルのダウンロードを避けたい。

4

2 に答える 2

4

WebClient.Net のクラスを使用するのはどうですか? データの取得は簡単です。そのようです、

$webclient = new-object System.Net.WebClient
try {
    # Download data as string and store the result into $data
    $data = $webclient.DownloadString("http://www.google.com/")
} catch [Net.WebException] {
    # A 404 or some other error occured, process the exception here
    $ex = $_
    $ex.Exception
}
于 2013-09-24T11:09:54.683 に答える
2

PowerShell 3.0 以降を使用している場合は、HTTP要求を発行してステータス コードを確認するInvoke-WebRequestことで、ページが存在するかどうかを確認できます。HEAD

$Result = Invoke-WebRequest -uri `http://bla.com/testApp.jnlp` -method head
if ($Result.StatusCode -ne 200){
    # Something other than "OK" was returned.
}

これも実行可能ですSystem.Net.WebClientが、もう少し手間がかかります。

于 2013-09-24T11:20:40.340 に答える