我有一個數組,$常規,我需要循環並點擊每次,這樣我可以保存在click()後可用的PDF。ForEach循環在PowerShell失敗後第一次迭代
$Conventional = @()
$Conventional = $ie.Document.getElementsByTagName("td") | ? {($_.getAttributeNode('class').Value -match 'NodeDocument') -and ($_.innerText -notmatch 'Library Home')}
這充滿$常規與我需要遍歷並點擊()每次4個td
元素。以下是我的ForEach循環,它在第一次迭代中工作正常,但它然後失敗,並且每次都返回System.ComObject
。
ForEach ($i in $Conventional){
$text = $i.innerText
$i.click()
while ($ie.Busy -eq $true){Start-Sleep -Seconds 2}
$PDF = $ie.Document.getElementById("OurLibrary_LibTocUC_LandingPanel_libdocview1_DocViewDocMD1_hlViewDocument")
$currentURL = $PDF.href
$fileName = $baseFileName + "_" + $cleanText
Invoke-WebRequest -Uri $currentURL -OutFile $NewPath\$fileName.pdf -WebSession $freedom
}
這是我捕獲的數組的屏幕截圖。爲了檢索PDF,每一個都需要點擊。
任何幫助真的不勝感激。謝謝大家
'foreach(){}'有時候COM應用程序返回的集合有問題,因爲它們沒有正確實現'IEnumerable'。用'$ Conventional | ForEach-Object {$ _。InnerText}'來代替 –
感謝您的迴應,現在就試試這個! – Quanda
嗯,同樣的問題按照你的建議。在第一次迭代之後,Array是空的,沒有任何工作。當我刪除$ _click()它會工作並打印innerText,但我需要它與$ _click()一起工作。 Grrrr ... – Quanda