我有一段代碼在一系列日誌文件中尋找字符串。Powershell問題while while循環
如果找到字符串,它應該退出循環(嵌套在另一個循環內的功能的一部分)以$ buildlogsuccess =「真」
如果無法找到字符串,它應該退出,返回$ buildlogsuccess =「假」
的選擇字符串語句本身的工作原理,但它看起來像有什麼毛病下面的代碼:
$logArr = gci C:\build\Logs | where {($_.name -like 'install*.log') -and (! $_.PSIsContainer)} | select -expand FullName
$count = ($logArr).count
Foreach ($log in $logArr) {
Do {
$count -= 1
$buildlogsuccess = [bool](select-string -path $log -simplematch $buildstring)
If (($buildlogsuccess)) {break}
} while ($count -gt '0')
}
當日志中的一個具有串,循環結束並且應該返回$ buildlogsuccess爲'True 」。
如果我檢查$ log,它會顯示我知道的字符串文件(在本例中爲C:\ build \ Logs \ Installer1.log)。
奇怪的是,在這一點上$ count顯示爲值爲-1?
如果我從該文件中取出字符串並再次運行,它也會退出並返回正確的變量值(並根據預期顯示$ log變量作爲$ logArr中的最後一個文件),但此時$ count顯示爲-24。
當字符串出現在其中一個日誌文件中時,我的代碼也返回$ buildlogsuccess'False'。
重新測試通過手動填充$日誌(與具有該字符串的文件)和$ buildstring並獲得「真」如預期使用
[布爾](選擇串-path $當
[bool](select-string -path $log -simplematch $buildstring)
登錄-simpleMatch $ buildstring)
注:變量它使用:
$ buildstring =「包 「F:\ XXX \引導程序\ apackage \ Installsomething。 xml'已成功處理 「
任何幫助確定我出錯的地方將不勝感激。