2016-10-24 4 views
0

Ich muss prüfen, ob eine passwortgeschützte Webdatei in einem Verzeichnis vorhanden ist.Überprüfen, ob eine passwortgeschützte Webdatei existiert

Ich bekomme immer einen (401) Unauthorized Fehler so, Zeilen 5-6 funktionieren nicht.

Script-Code:

$currdate = Get-Date -format "yyyyMMdd" 
$Username = "username" 
$Password = "password" 
$url = "http://some.website/" + $currdate + "/somedirectory/some.file.txt" 
$WebClient = New-Object System.Net.WebClient 
$WebClient.Credentials = New-Object System.Net.Networkcredential($Username, $Password) 
$HTTP_Request = [System.Net.WebRequest]::Create($url) 
$HTTP_Response = $HTTP_Request.GetResponse() 
$HTTP_Status = [int]$HTTP_Response.StatusCode 
If ($HTTP_Status -eq 200) { 
    Write-Host "File exists!" 
} 
Else { 
    Write-Host "File does not exist..." 
} 
$HTTP_Response.Close() 

Was mache ich falsch?

+1

A 404 bedeutet, dass die Datei nicht existiert, so ist es richtig zu funktionieren scheint. – CodeCaster

+1

Es hört sich so an, als würde Ihre '$ url' nicht korrekt erstellt, wenn die Datei existiert, wenn Sie sie manuell überprüfen, aber nicht, wenn Ihr Code die URL erstellt. Sind Sie sicher, dass es ** etwas.website20161024/somedirectory/some.file.txt ** wäre? Scheint so, als ob du ein '/' – gravity

+0

verzeihen würde. Sorry, ich habe vergessen, das in den ursprünglichen Beitrag aufzunehmen. Bearbeitet. – arnpry

Antwort

0

Sie verwenden zwei Objekte WebClient und WebRequest, Sie benötigen nur eine.

Sie legen die Anmeldeinformationen für WebClient fest, aber Sie führen die Antwort über WebRequest ohne Anmeldeinformationen aus.

Ändern Sie den Code wie:

$currdate = Get-Date -format "yyyyMMdd" 
    $Username = "xxxxx" 
    $Password = "xxxxxx" 
    $url = "http://some.website/" + $currdate + "/somedirectory/some.file.txt"  

    # comment these lines,you use WebRequest 
    #$WebClient = New-Object System.Net.WebClient 
    #$WebClient.Credentials = New-Object System.Net.Networkcredential($Username, $Password) 

    $HTTP_Request = [System.Net.WebRequest]::Create($url) 

    #add this line 
    $HTTP_Request.Credentials = new-object system.net.networkcredential($Username, $Password) 

    $HTTP_Response = $HTTP_Request.GetResponse() 
    $HTTP_Status = [int]$HTTP_Response.StatusCode 
    If ($HTTP_Status -eq 200) { 
     Write-Host "File exists!" 
    } 
    Else { 
     Write-Host "File does not exist..." 
    } 
    $HTTP_Response.Close()