用于终止/取消脚本的powershell命令

时间:2017-03-28 11:29:40

标签: powershell

是否有任何powershell命令可用于终止powershell脚本?我使用过Exit 1,但这对我没用。即使我尝试过抛出也会出现一些错误。这是我尝试过的脚本。我希望脚本在服务状态停止时停止。

$EMAgent1 = get-wmiobject win32_service | where-object {($_.Name -eq 'oim12cAgent') -or ($_.Name -eq 'oimagent12c2Agent') -or ($_.Name -eq 'oimagent10gAgent') -or ($_.Name -eq 'GFarmEM10gAgent') -or ($_.Name -eq 'GFarmEM11gAgent')} | format-list name | Out-String

$AgentName1 = $EMAgent.Split(":")[1].Trim()

$EMStatus1 = get-wmiobject win32_service | where-object {$_.Name -eq $AgentName} | format-list state | Out-String
$AgentStatus1 = $EMStatus.Split(":")[1].Trim()

if ($AgentName1 -eq $null)
{
    $AgentName1 = "Unavailable"
}
else
{
    $AgentName1 = "$AgentName1"
}
if ($AgentStatus1 -eq "Stopped")
{
    Exit 1
}
Else 
{

}   

1 个答案:

答案 0 :(得分:0)

请使用Get-Service,因为它更快更容易使用。

最好先搜索所需的服务,而不是获取所有服务并在以后丢弃所有不匹配的内容。这样你就不需要处理一个空的服务列表,因为它从一开始就填满了。

您想要的脚本可能如下所示:

$AgentList='oim12cAgent','oimagent12c2Agent','oimagent10gAgent','GFarmEM10gAgent','GFarmEM11gAgent'

foreach ($AgentService in $AgentList) {
    if ((Get-Service $AgentService -ErrorAction SilentlyContinue).Status -like '*stopped*') {
        break
        } else {
            Write-Host "do stuff"
            }
    }