是否有任何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
{
}
答案 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"
}
}