のページから情報を取得する:だから私はPowerShellを使用して、この簡単な操作を行う自動化したいのPowerShell
- ゴー「MYNAME」と私のウェブサイトへ
- 塗りつぶし「USERNAME」
- チェック「PERSONNEL_NBR "チェックボックス
- はPERSONNEL_NBRを取得し、変数
注:すべてのソリューションは、ME
の罰金です、私はそれが動作するように適切なIEのセッションを起動していないのでを呼び出し、WebRequestクラスを使用したいと思います。これは非常に高く評価されるでしょう!
このコード:
$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:上記のバージョンは、私が使用しているコードの簡略化されたバージョンです。完全なバージョンはブラウザを待っていますが、まだ動作しません(おそらくクッキーの問題のために、誰かがそれを行う方法を提案できれば喜んで解決します。私のスクリプトでこの情報をどのように使用するのかわかりません)
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
アプリケーションとしてIEなしでこれを行うには、おそらく本物のPOSTリクエストをサイトに作成する必要があります。その場合は、必要に応じて認証クッキーを含める必要があります。また、「PERSONNEL_NBR」リンクをクリックすると、クライアント側で収集されたフォームデータ(この名前はフォームの一部のフィールド、あなたのスクリプトがインタラクティブなPowershellセッションの外で働くのを妨げる可能性があるのは、クッキーの存在です。 – Vesper
申し訳ありませんが、私はそのサイトにアクセスすることができません...アクセス可能であれば、Fiddlerトレースを記録し、このサイトがPOSTリクエストのペイロードをどのように構築し、それをPowerShellに変換するかを確認してください。 – FoxDeploy
@Vesper投稿したコードを使ってpowershellからクッキーをリクエストする方法はありますか? –