我對 Powershell 完全陌生,正在嘗試完成一項小任務。我試圖在日志檔案的最后兩行中找到一個字串,如果該值不匹配,則采取行動。如果匹配,則結束。我認為這是解釋它的最簡單方法。:-) 我正在搜索某些詞,如果沒有找到,打開記事本,如果找到,退出。我已經將其中的一些拼湊在一起,但我不確定如何處理 If False, run notepad 部分。希望得到一些幫助。謝謝。
if (Test-Path C:\windows\ccm\logs\CcmEval.log) {
Get-Content 'C:\windows\ccm\logs\CcmEval.log' -Tail 2 | Select-String "Updating MDM_ConfigSetting.ClientHealthStatus with value 7" | % { $_ -notmatch "value 7" }
Start-Process C:\windows\notepad.exe
}
uj5u.com熱心網友回復:
你可以用另外一個 if else 條件來做到這一點。如果條件不匹配,它將打開記事本,否則它將執行您的命令退出。
if (Test-Path C:\windows\ccm\logs\CcmEval.log) {
$condition = Get-Content 'C:\windows\ccm\logs\CcmEval.log' -Tail 2 | Select-String "Updating MDM_ConfigSetting.ClientHealthStatus with value 7" | % { $_ -notmatch "value 7" }
if (!$condition) {
Start-Process C:\windows\notepad.exe
}
else {
"Do something here"
}
}
uj5u.com熱心網友回復:
Test-Path如果添加-ErrorAction SilentlyContinue到Get-Content,則可以洗掉,因此如果找不到檔案,它將悄悄地不回傳任何內容。這意味著無論檔案是否存在,您都可以使用相同的代碼。
-match采用正則運算式模式,它足夠強大,您可以一次性將“not 7”構建到其中,[^7]用于表示“除 7 之外的任何字符”。
$logFile = 'C:\windows\ccm\logs\CcmEval.log'
$lines = Get-Content -Path $logFile -Tail 2 -ErrorAction SilentlyContinue
if ($lines -match "Updating MDM_ConfigSetting.ClientHealthStatus with value [^7]") {
Start-Process C:\windows\notepad.exe
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/362437.html
