如果存在窗口名称,如何退出powershell脚本?

时间:2015-03-25 01:00:23

标签: powershell foreach powershell-v4.0

我可以获得这样的当前打开窗口列表:

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

2 个答案:

答案 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记事本