Вернуть URL и коды состояния большого файла в powershell - PullRequest
0 голосов
/ 28 марта 2019

Я изменил большой файл, чтобы дать мне только те URL-адреса, которые я хочу запустить в powershell, чтобы проверить код состояния и вернуть их.Я новичок в powershell, поэтому у меня возникли некоторые проблемы с моим кодом.Файл может иметь дубликаты URL-адресов.

У меня это работает, когда я просто вставляю один URL-адрес.Я пробовал несколько разных вещей для каждого объекта, но я чувствую, что я близко.

$urlArray = Import-Csv -Path "Scripts\test.csv" | Select -ExpandProperty urls


Function Get-WebStatus($url){

foreach ($url in $urlArray) {
    # First we create the request.
    $HTTP_Request = [System.Net.WebRequest]::Create($url)

    # We then get the HTTP code as an integer.
    $HTTP_Status = [int]$HTTP_Response.StatusCode

    If ($HTTP_Status -eq 200) {
        Write-Host "Site is Ok!"
    } Else {
        Write-Host $url + $HTTP_Request
    }
}
}

Мне просто нужен список сайтов, которые не работают.В лучшем случае он сохраняется в собственном текстовом файле.

Не работает пример: google.com 404

Ответы [ 2 ]

1 голос
/ 29 марта 2019

это функция, которую я использую

function Get-UrlResponse ([string] $Url)
{
    try
    {
        $TotalMilliseconds = $(Measure-Command {
            $reply = Invoke-WebRequest -Uri $Url -UseBasicParsing -DisableKeepAlive -Method Head
            $statuscode = $reply.StatusCode
        }).TotalMilliseconds
    }
    catch [Net.WebException]
    {
        $statuscode = [int]$_.Exception.Response.StatusCode
    }

    [pscustomobject]@{
        URL = $url
        StatusCode = $statuscode
        TotalMilliseconds = $TotalMilliseconds
        Date = Get-Date -f yyyyMMdd-HHmmss
    }
}

$urlArray = Import-Csv -Path "Scripts\test.csv" | Select -ExpandProperty urls

foreach ($url in $urlArray) {
    Get-UrlResponse $url
}
1 голос
/ 29 марта 2019

Это должно работать:

Add-Type -AssemblyName System.Web
Add-Type -AssemblyName System.Web.Extensions

$urlArray = Import-Csv -Path "Scripts\test.csv" | Select -ExpandProperty urls

function Get-WebStatus {

    param( 
        $urlArray 
    )

    foreach ($url in $urlArray) {

        try {
            $request     = Invoke-WebRequest -Uri $url -Method GET
            $statusCode  = $request.StatusCode
        }
        catch {
            $statusCode  = $_.Exception.Response.StatusCode.value__
        }

        "$statusCode returned from $url"

    }
}

Get-WebStatus -urlArray $urlArray
...