我想使用MS Powershell自动完成工作中的任务。请参阅下面的代码,登录网站。这段代码工作正常。
RewriteCond %{QUERY_STRING} !^noredirect=1$
现在,为了下载报告,我需要从HTML正文中提取一个数字并将其插入变量中。我之所以这样做是因为每次访问该页面时这个数字都会改变。请参阅下图,其中数字位于网页的HTML正文内。它总是12位数:
这是我的问题。我无法在变量中得到这个数字。如果可以,那么我将使用下面的脚本完成Powershell代码。
$username = "usern"
$password = "pass"
$ie = New-Object -com InternetExplorer.Application
$ie.visible=$true
$ie.navigate("http://www.exemple.com")
while($ie.ReadyState -ne 4) {start-sleep -m 100}
$ie.document.IHTMLDocument3_getElementByID("textfield").value = $username
$ie.document.IHTMLDocument3_getElementByID("textfield2").value = $password
$ie.document.IHTMLDocument3_getElementByID("btnLogin").Click();
你看到的地方' xxx ..'我会替换变量并下载报告
答案 0 :(得分:1)
在你的代码之后 while($ ie.ReadyState -ne 4){start-sleep -m 100}
试试这个:
$($ie.Document.getElementsByTagName("a")).href | ForEach {
# The next line isn't necessary, but just to demonstrate iterating through all the anchor tags in the page (feel free to comment it out)
Write-Host "This is the href tag that I'm enumerating through: $_"
# And this bit checks for that number you're looking for and returns it:
if( $_ -match "javascript:openwindow('/\.\./\.\./[\d+]\.pdf'.*)" )
{
$matches[1]
}
}
这应该有用。
答案 1 :(得分:0)
请参阅下面的代码以及我的问题的答案。
$($ie.Document.getElementsByTagName("a")).href | ForEach {
if( $_ -match '(\d+)\.pdf' )
{
$matches[1]
}
}
谢谢!