2016-06-08 36 views
1

這是我的代碼:如何在Powershell中優化多個if語句?

Function CleanUpOracle 
{ 

    if ($Requete) 
    { 
     $Requete.Dispose() 
    } 

    if ($ExecuteRequete) 
    { 
     $ExecuteRequete.Dispose() 
    } 

    if ($Transaction) 
    { 
     $Transaction.Dispose() 
    } 

    if ($OracleConnexion) 
    { 
     $OracleConnexion.close() 
     $OracleConnexion.Dispose() 
    } 

    if ($Log.id) 
    { 

     $Log.PSObject.Properties.Remove('id') 

    } 

} 

我測試,如果再變量存在{do something}

但今後我會多變量測試,我不希望有幾百行與那。

我該如何優化?可能有一個開關,但如何?

謝謝!

回答

5

如果要有條件地Dispose對多個項目,你可以從列表串流到ForEach-Object(其別名是%):

@($Requete, $ExecuteRequete, $Transaction, $OracleConnexion) | 
% {if($_) {$_.Dispose()} } 

注:我這個拆分到多個行以便於閱讀。

+0

不錯,但在某些情況下需要關閉()或PSObject.Properties.Remove()也。如何輕鬆區分? –

+0

@AdeelASIF - 這更困難。然而,大多數具有'Close'方法的對象在調用'Dispose'時都會這樣做,所以這可能是您可以利用的。 – Sean