我試圖設置一個PowerShell腳本來獲取加密密鑰。該公司在網站上公佈,希望我們每6個月手工一次,但是我很懶,很健忘。所以我寫了一個腳本來爲我做,我會安排每3個月左右運行一次。這是我到目前爲止:使用Powershell下載未知文件名
$url ="http://www.theirwebsite.com/pgp/corp07272011Public.asc"
$client = new-object System.Net.WebClient
$proxy = New-Object System.Net.WebProxy("http://OurProxy:80")
$proxy.UseDefaultCredentials = $true
$client.proxy = $proxy
$client.DownloadFile($url, ".\CorpPublicKey.asc")
而這對他們當前的關鍵。 但是,我正在下載的文件使用日期作爲其名稱的一部分。 2011年7月27日左右時,推測新密鑰將在2011年1月27日後命名,或者類似的東西。
所以這可能是一個簡單的.NET問題,但我如何找到網站上的文件?或者有沒有更好的方法來解決這個問題?
編輯:好吧,我沒有提到的一個小技巧是,該文件已鏈接到已知的網站上。 Soooo ...理論上我可以解析鏈接的網頁,並使用它來查找文件名。如果我把它全部整理出來,我會發布代碼。
編輯,部分Deux
所以我想出了這一個。
1)你不能簡單地列出在網絡服務器上的文件。這就是網站管理員發佈文件樹的原因。或者,您可以通過蜘蛛抓取網站上的所有鏈接。
2)知道在我的目標網站上總會有一個鏈接,我獲取網頁,找到鏈接/文件名,然後可以下載文件。
3)這樣做的正確方法是將其解析爲xml,然後使用Xpath或其他東西搜索我的鏈接的錨標籤。
4)但是,這很煩人,所以我只是爲.asc文件進行了正規化,並將其稱爲完成。
$url ="http://www.theirwebsite.com/pgp/"
$client = new-object System.Net.WebClient
$proxy = New-Object System.Net.WebProxy("http://ourproxy:80")
$proxy.UseDefaultCredentials = $true
$client.proxy = $proxy
$webstring = $client.DownloadString($url)
$webstring -match "aspecifcname.*asc"
$matches[0]
$url ="http://www.theircompany.com/pgp/" + $matches[0]
"url: " + $url
#Huh, we need to use the full path for downloading this file. .\ didn't cut it
$client.DownloadFile($url, "C:\Program Files (x86)\theirCompany\savedKey.asc")
你可以返回一個目錄中的文件列表 – harryovers
@harryovers:對不起,babysteps。如何列出網站的文件?或者我如何將網站視爲目錄? – Philip