У меня есть два утверждения PowerShell do..while
, которые прекрасно работают отдельно. Тем не менее, я хочу объединить их и использовать логику обоих.
Код ниже разделен на 3 раздела. Первый полон объявлений переменных, которые охватывают оба оператора. Вторым является первый оператор Do-While, который заставляет скрипт не двигаться вперед с другими процессами до полной загрузки веб-страницы IE. В третьем разделе есть второй оператор Do-While, который строго возвращает оператор «loading» до тех пор, пока процесс не загрузится, а затем возвращает оператор «loaded ».
Я хочу правильно скомбинировать их так, чтобы скрипт оставался в цикле до тех пор, пока страница не загрузится, возвращая выражение «загрузка», а затем сообщит «загружен» и перейдет к жизни.
$elementID = "loginHeader"
$elementMatchText = "Pick an account"
$timeoutMilliseconds = 5000
$timeStart = Get-Date
$exitFlag = $false
$started = $false
$ie = (New-Object -Com SXcript.Shell).Run("http://www.msn.com", 3)
do {
sleep -Milliseconds 100
if ( $ie.ReadyState -eq 4 ) {
$elementText = (($ie.Document).GetElementByID($elementID )).InnerText
$elementMatch = $elementText -match $elementMatchText
}
$timeout = ((Get-Date).Subtract($timeStart)).TotalMilliseconds -gt $timeoutMilliseconds
$exitFlag = $elementMatch -or $timeout
} until ( $exitFlag )
Start-Sleep -m 500
[System.Windows.Forms.SendKeys]::SendWait("{ENTER}")
do {
$status = Get-Process iexplore
if (!($status)) {
Write-Host 'Internet Explorer is starting';
Start-Sleep -m 100
} else {
Write-Host 'Internet Explorer has started';
$started = $true
}
} until ($started)