所以我想使自動化使用PowerShell的做這個簡單的操作:獲取信息從頁面中使用PowerShell
- 到我的網站
- 填寫「USERNAME」與「MYNAME」
- 檢查「PERSONNEL_NBR 「複選框
- 提交
- 檢索PERSONNEL_NBR並將其存儲在一個變量
注意:任何解決辦法是罰款,我
我想用調用-的WebRequest,因爲它沒有推出合適的IE瀏覽器會話中工作。這將不勝感激!
此代碼:
$ie = $null
$ie = new-object -com internetexplorer.application
$ie.navigate('http://example.com/')
$link = $ie.Document.getElementsByTagName('input') | where-object {$_.name -eq "username"}; $link.value = "myname"
$link = $ie.Document.getElementsByTagName('input') | where-object {$_.value -eq "PERSONNEL_NBR"}; $link.click()
$link = $ie.Document.getElementsByTagName('input') | where-object {$_.type -eq "submit"}; $link.click()
sleep 2
$personnel_nbr = ((($ie.Document.body.outerHTML | findstr /L /C:">PERSONNEL_NBR<") -split "<SPAN class=tx>" | Select -Index 1).split("</SPAN>",2) | Select -Index 0)
$ie.quit()
作品,但只有當我打開PowerShell和從那裏發射的命令。如果我將它保存爲腳本並啓動它,它不起作用。
PS:降低IE安全性是不可行的,無論如何它不能解決問題。
PPS:上述版本是我使用的代碼的簡化版本,沒有超出主題的內容。完整的版本正在等待瀏覽器,但它仍然不起作用(可能是由於cookie問題?如果有人可以提出建議,我很樂意解決這個問題。我已經有關於cookie的信息,我已經重新編號我只是不知道如何在我的腳本中使用這些信息。)
PPPS:如果問題鏈接到交互模式,我不能在另一個powershell中執行所有這些命令模擬交互式會話?這將工作。任何人都知道嗎?
版本二
這是另一種嘗試。沒有錯誤,但它返回頁面的內容。我甚至不確定請求是否通過。
$session = New-Object Microsoft.PowerShell.Commands.WebRequestSession
$cookie = New-Object System.Net.Cookie
$cookie.Name = "mycookiename"
$cookie.Value = "mycookievalue"
$cookie.Path = "/"
$cookie.Domain = "example.com"
$session.Cookies.Add($cookie)
$uri = "http://example.com"
$body = @{username="myname";fields="PERSONNEL_NBR"}
#THESE ARE UNSUCCESSFUL ATTEMPTS
#$r = Invoke-WebRequest -Uri $uri -WebSession $session
#$r.InputFields[34].innerHTML = "true"
#$r.InputFields[34].innerText = "true"
#$r.Forms[0].Fields["fields"] = "PERSONNEL_NBR"
#$r.Forms[0].Fields["PERSONNEL_NBR"] = "true"
#$r.InputFields[0].innerText="myname"
#$r.Forms[0].Fields["username"] = "myname"
#$r = Invoke-WebRequest -Uri $uri -WebSession $session -Method Post -Body $r
$r = Invoke-WebRequest -Uri $uri -WebSession $session -Method Post -Body $body
$r.RawContent
您可能需要爲您的站點創建一個完整的POST請求,以在沒有IE作爲應用程序的情況下執行此操作。如果需要的話,那個應該包含auth cookie,以及點擊「PERSONNEL_NBR」鏈接(我期望這個填充表單中的一些字段,最有可能是檢查名稱操作)時在客戶端收集的任何表單數據。順便提一下,cookie的存在可能會阻止腳本在交互式Powershell會話之外工作。 – Vesper
很抱歉,我無法訪問該網站以幫助...如果我們有權訪問,我們可以做什麼就是記錄Fiddler跟蹤並查看此站點如何爲POST請求構建有效負載,然後將其轉換爲PowerShell。 – FoxDeploy
@Vesper所以有什麼辦法可以使用我發佈的代碼從powershell請求cookie? –