2016-10-24 86 views
0

我需要检查目录中是否存在受密码保护的网页文件。检查是否存在受密码保护的网页文件

我不断收到(401) Unauthorized错误,因此第5-6行不起作用。

脚本代码:

$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() 

我在做什么错?

+1

404意味着该文件不存在,所以它似乎正常工作。 – CodeCaster

+1

听起来好像你的'$ url'没有正确地形成,如果这个文件存在手工检查时存在,但是当你的代码创建URL时不存在。你确定它会** some.website20161024/somedirectory/some.file.txt **?似乎你错过了一个'/' – gravity

+0

对不起,我忘了把它包含在原文中。编辑。 – arnpry

回答

0

您使用两个对象WebClient和WebRequest,您只需要一个。

您将凭据设置为WebClient,但您通过WebRequest进行响应而没有凭据。

修改代码为:

$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() 
相关问题