【问题标题】:How to get pass "The site's security certificate is not trusted!" while monitoring URLs in powershell如何通过“站点的安全证书不受信任!”在 powershell 中监视 URL 时
【发布时间】:2013-12-13 19:17:46
【问题描述】:

我正在使用一个 powershell 脚本来检查 Web URL 以查看它是否存在。但是,我必须检查的几个站点将您重定向到需要您单击按钮才能继续的站点。即使站点正在运行,它也会因为页面提前返回失败。有没有办法使用 powershell 脚本解决这个问题?我收到的错误如下,后面是我的代码。

错误

SSL 错误图标
该站点的安全证书不受信任!
您尝试访问 ,但服务器提供了由您的计算机操作系统不信任的实体颁发的证书。这可能意味着服务器已经生成了自己的安全凭证,Chrome 无法依赖这些凭证获取身份信息,或者攻击者可能试图拦截您的通信。 您不应该继续,特别是如果您以前从未见过此站点的此警告。

代码

$URLListFile = "\url_list.txt"  
$URLList = Get-Content $URLListFile -ErrorAction SilentlyContinue 
$Result = @() 

#$OutputReport = "<html><title>PROD Monitoring Report</title><body><h2>PROD Monitoring         Report</h2><table border=1 cellpadding=0 cellspacing=0><tr>Description</tr><tr>Status Code</tr><tr>Status</tr><tr>Response Time</tr>";
$OutputReport += "<HTML><TITLE>PROD Report</TITLE><BODY><font color=""#99000""><H2> PROD Monitoring Report </H2></font><Table border=1 cellpadding=0 cellspacing=0><TR bgcolor=gray><TD><B>Description</B></TD><TD><B>Code</B></TD><TD><B>Status</B></TD><TD><B>ResponseLength</B></TD></TR>"

Foreach($Uri in $URLList) 
{ 
    $startTime = Get-Date
    $req = [system.Net.WebRequest]::Create($Uri)
    try 
    {
            $res = $req.GetResponse()
    } 
    catch [System.Net.WebException] 
    {
            $res = $_.Exception.Response
    }
    $endTime = Get-Date

    $OutputReport += "<tr><td>"+$Uri+"</td>";
    #$OutputReport += "<tr><td>Template</td>";
    $web_status = [int]$res.StatusCode
    if ($web_status -ne 200)
    {
            $OutputReport += "<td>"+$web_status+"</td><td bgcolor=red>Failure</td>"
    }
    else
    {
            $OutputReport += "<td>"+$web_status+"</td><td>Success</td>"
    }
    $OutputReport += "<td>"+($endTime - $startTime).TotalSeconds+" seconds</td></tr>"
} 

$OutputReport += "</table></body></html>";
$Outputreport | out-file C:\Users\phall\Desktop\Docs\report.html 

#Invoke-Expression C:\Scripts\Test.htm   

【问题讨论】:

  • 您是否在这些服务器上使用自签名证书?

标签: powershell ssl powershell-3.0


【解决方案1】:

假设您在这些网站上使用自签名证书,您必须将这些证书安装到运行您的脚本的系统上的证书存储中,以便所有用户都可以访问它们。示例见this page。

上面和PowerShell无关,下面是。

由于您使用的是 PowerShell 3.0,因此您应该了解 Invoke-WebRequest cmdlet。通过允许您轻松调用 HTTP HEAD 请求,它可以大大加快您的脚本速度,这只会告诉您您的 URL 是活动的并且正在启动 - 无需拉回发送回的 所有内容客户。

Invoke-WebRequest -uri $uri -method HEAD |select-object statuscode

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-26
    • 2022-12-23
    • 1970-01-01
    • 2015-01-28
    • 1970-01-01
    • 1970-01-01
    • 2018-04-03
    • 1970-01-01
    相关资源
    最近更新 更多