一旦在Powershell中找到所需的匹配项,如何停止脚本的进一步执行

问题描述

我有下面的脚本,该脚本试图找出Azure脚本的租户。虽然脚本运行良好,但我对其效率不满意。

一旦找到所需的租户,我想停止进一步执行此脚本。

$Subscriptions = Read_Data_From_Table -ServerInstance "MysqLInstanceName" -Query "select SubscriptionID from CPCapacity..Subscriptions where Domain = 'UnkNown'"
$N = 1
FOREACH ($SubscriptionID in $Subscriptions) {

    $SubscriptionID = $SubscriptionID.SubscriptionID
    Write-host -ForegroundColor Green "$N. Working on $SubscriptionID"
  
    #GME
    $Connect = $Null
    $Connect = Connect-AzAccount -ServicePrincipal -ApplicationID XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX -Tenant 124edf19-b350-4797-aefc-3206115ffdb3 -CertificateThumbprint XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -Subscription $SubscriptionID -ErrorAction SilentlyContinue

    $Var = $Connect | findstr "124edf19-b350-4797-aefc-3206115ffdb3"
    IF($Var -match "124edf19-b350-4797-aefc-3206115ffdb3" )    
    {
        Write-Host "GME Domain | $Var" -ForegroundColor Yellow
    }

    
    #PME
    $Connect = $Null
    $Connect = Connect-AzAccount -ServicePrincipal -ApplicationID XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX -Tenant 975f013f-7f24-47e8-a7d3-abc4752bf346 -CertificateThumbprint XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -SubscriptionID $SubscriptionID -ErrorAction SilentlyContinue
 
    $Var = $Connect | findstr "975f013f-7f24-47e8-a7d3-abc4752bf346"
    IF($Var -match "975f013f-7f24-47e8-a7d3-abc4752bf346" )    
    {
        Write-Host "PME Domain | $Var" -ForegroundColor Green
    }
    
    #AME
    $Connect = $Null
    $Connect = Connect-AzAccount -ServicePrincipal -ApplicationID XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX -Tenant 33e01921-4d64-4f8c-a055-5bdaffd5e33d -CertificateThumbprint XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -SubscriptionID $SubscriptionID -ErrorAction SilentlyContinue
 
    $Var = $Connect | findstr "33e01921-4d64-4f8c-a055-5bdaffd5e33d"
    IF($Var -match "33e01921-4d64-4f8c-a055-5bdaffd5e33d" )    
    {
        Write-Host "AME Domain | $Var" -ForegroundColor Green
    }

    #Redmond
    $Connect = $Null
    $Connect = Connect-AzAccount -ServicePrincipal -ApplicationID XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX -Tenant 72f988bf-86f1-41af-91ab-2d7cd011db47 -CertificateThumbprint XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -SubscriptionID $SubscriptionID -ErrorAction Error
 
    $Var = $Connect | findstr "72f988bf-86f1-41af-91ab-2d7cd011db47"
    IF($Var -match "72f988bf-86f1-41af-91ab-2d7cd011db47" )    
    {
        Write-Host "Redmond Domain | $Var" -ForegroundColor Green                 
    }    
    ELSE 
        {
        Write-Host "UnkNown Domain $SubscriptionID" -ForegroundColor RED
        }    
      

    $N = $N +1
    Write-Host " "
}

解决方法

继续语句对我有用。如果可以更好地编写此代码,请提出建议。我需要代码审查

$Subscriptions = Read_Data_From_Table -ServerInstance "MySQLInstanceName" -Query "select SubscriptionID from CPCapacity..Subscriptions where Domain = 'Unknown'"
$N = 1
FOREACH ($SubscriptionID in $Subscriptions) {

    $SubscriptionID = $SubscriptionID.SubscriptionID
    Write-host -ForegroundColor Green "$N. Working on $SubscriptionID"
  
    #GME
    $Connect = $Null
    $Connect = Connect-AzAccount -ServicePrincipal -ApplicationID XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX -Tenant 124edf19-b350-4797-aefc-3206115ffdb3 -CertificateThumbprint XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -Subscription $SubscriptionID -ErrorAction SilentlyContinue

    $Var = $Connect | findstr "124edf19-b350-4797-aefc-3206115ffdb3"
    IF($Var -match "124edf19-b350-4797-aefc-3206115ffdb3" )    
    {
        Write-Host "GME Domain | $Var" -ForegroundColor Yellow
        $N = $N +1
        continue
    }

    
    #PME
    $Connect = $Null
    $Connect = Connect-AzAccount -ServicePrincipal -ApplicationID XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX -Tenant 975f013f-7f24-47e8-a7d3-abc4752bf346 -CertificateThumbprint XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -SubscriptionID $SubscriptionID -ErrorAction SilentlyContinue
 
    $Var = $Connect | findstr "975f013f-7f24-47e8-a7d3-abc4752bf346"
    IF($Var -match "975f013f-7f24-47e8-a7d3-abc4752bf346" )    
    {
        Write-Host "PME Domain | $Var" -ForegroundColor Green
        $N = $N +1
        continue
    }
    
    #AME
    $Connect = $Null
    $Connect = Connect-AzAccount -ServicePrincipal -ApplicationID XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX -Tenant 33e01921-4d64-4f8c-a055-5bdaffd5e33d -CertificateThumbprint XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -SubscriptionID $SubscriptionID -ErrorAction SilentlyContinue
 
    $Var = $Connect | findstr "33e01921-4d64-4f8c-a055-5bdaffd5e33d"
    IF($Var -match "33e01921-4d64-4f8c-a055-5bdaffd5e33d" )    
    {
        Write-Host "AME Domain | $Var" -ForegroundColor Green
        $N = $N +1
        continue
    }

    #Redmond
    $Connect = $Null
    $Connect = Connect-AzAccount -ServicePrincipal -ApplicationID XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX -Tenant 72f988bf-86f1-41af-91ab-2d7cd011db47 -CertificateThumbprint XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -SubscriptionID $SubscriptionID -ErrorAction SilentlyContinue
 
    $Var = $Connect | findstr "72f988bf-86f1-41af-91ab-2d7cd011db47"
    IF($Var -match "72f988bf-86f1-41af-91ab-2d7cd011db47" )    
    {
        Write-Host "Redmond Domain | $Var" -ForegroundColor Green
        $N = $N +1
        continue
    }    
    ELSE 
    {
     Write-Host "Unknown Domain $SubscriptionID" -ForegroundColor RED
     $N = $N +1
     continue
    }    
      

    $N = $N +1
    Write-Host " "
}