1

我正在使用 powershell 进行一些监视,并且我想检查应用程序的 jnlp 是否存在于网站上并且可以下载。我有 .jnlp 的链接,到目前为止,我正在使用 .navigate() 下载文件。

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

我试图通过提供无效的文件名来捕获异常,但它不起作用。我还想下载该应用程序,然后尝试删除该文件,以检查它是否确实存在,但它太慢了,因为我有很多 jnlps 需要检查。

还有另一种更简单优雅的方法吗?我想避免下载我想测试的每个文件。

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 回答