我可以获得这样的当前打开窗口列表:
Get-Process | where {$_.mainWindowTitle} | format-table mainWindowTitle
如何编写正确的语法来循环并检查Window Name是否存在然后退出?
以下是我想要执行的逻辑:
# BASIC-esque CONDITIONAL LOGIC
# FILENAME: CheckWindowName.ps1
Get-Process | where {$_.mainWindowTitle} | format-table mainWindowTitle
# LOOP START - Loop through $_.mainWindowTitle / mainWindowTitle
If $_.mainWindowTitle CONTAINS "*notepad*" Then
Exit #break script
Else
Echo "Hello World! There are no instances of notepad open"
End If
# LOOP END
答案 0 :(得分:1)
Get-Process | where {$_.mainWindowTitle} | ForEach {
#iterates through processes here. each one can be referenced by $_
}
有关ForEach-Object
工作原理的基本介绍,请参见TechNet
答案 1 :(得分:1)
尝试使用-like而不是contains。它对我有用。
以下是示例:
PS C:\ windows \ system32> Get-Process |其中{$ _。mainWindowTitle -like“ notepad ”}
处理NPM(K)PM(K)WS(K)VM(M)CPU(s)Id ProcessName ------- ------ ----- ----- ----- ------ - ----------- 71 7 1516 6760 95 0.23 6328记事本 71 7 1516 6676 95 0.11 7212记事本 68 7 1472 2808 94 8.14 7364记事本 73 7 1540 1568 95 0.48 8640记事本 74 8 1820 1672 160 9.41 8884记事本