如何在Powershell中优化多个if语句?

时间:2016-06-08 13:37:55

标签: powershell powershell-v4.0

这是我的代码:

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}

但是在将来我会测试很多变量,我不想拥有数百行。

如何优化此功能?也许用开关但怎么样?

谢谢!

1 个答案:

答案 0 :(得分:5)

如果您想有条件地针对多个项目拨打Dispose,可以将它们从列表中流式传输到ForEach-Object(其别名为%):

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

注意:为了便于阅读,我将其拆分为多行。