在PowerShell中使用for循环的条件逻辑

时间:2015-06-28 13:23:09

标签: powershell powershell-v2.0

我开始使用PowerShell并使用“For Loop”创建条件逻辑。当我运行脚本时,没有结果出来。但是,如果我用单个公式替换这三个函数,它将起作用。 这是脚本:

for ($OTK = 1; $OTK -le 10; $OTK++)
{
if ($OMAT = 6)
{
    if ($OMAF = 7)
    {
        function TK
        {
            param ([INT]$OTK)
            $OTK * 2
        }
        function MAT
        {
            param ([INT]$OMAT, $TK)
            $TK * $OMAT /5
        }
        function MAF
        {
            param ([INT]$OMAF,$MAT)
            $MAT * $OMAF /5
        }
    }
    Write-Output $MAF
  }
}

我的问题是:

1,如何使这个循环工作?

2,如何独立于另一个源(ps1或psm1)调用这些函数?

3,可以将这两个if语句结合起来吗? 像if ($OMAT = 6 -and $OMAF = 7)
我试过这种格式,但它不起作用。

1 个答案:

答案 0 :(得分:0)

我“认为”这就是你所追求的:

function TK
{
    param([int]$OTK)
    $OTK * 2
}

function MAT
{
    param([int]$OMAT, $TK)
    $TK * $OMAT / 5
}

function MAF
{
    param([int]$OMAF,$MAT)
    $MAT * $OMAF / 5
}

$OMAT = 6
$OMAF = 7

for ($OTK = 1; $OTK -le 10; $OTK++)
{
    if ($OMAT -eq 6 -and $OMAF -eq 7)
    {
        MAF $OMAF (MAT $OMAT (TK $OTK))
        # (TK $OTK) is the output of TK that is fed into
        # MAT which takes $OMAT and the output of TK, that is fed into
        # MAF which takes $OMAF and the output of MAT
    }
}

在原始脚本中,您定义函数但从不调用它们。正如评论中指出的那样,您使用=进行比较和分配。在PowerShell中,相等比较opertors为-eq-ieq-ceq