Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于PowerShell中循环的条件逻辑_Powershell_Powershell 2.0 - Fatal编程技术网

用于PowerShell中循环的条件逻辑

用于PowerShell中循环的条件逻辑,powershell,powershell-2.0,Powershell,Powershell 2.0,我开始使用PowerShell,并使用“For循环”创建条件逻辑。当我运行脚本时,没有结果。但是,如果我用一个公式替换这三个函数,它就会起作用。 以下是脚本: for ($OTK = 1; $OTK -le 10; $OTK++) { if ($OMAT = 6) { if ($OMAF = 7) { function TK { param ([INT]$OTK) $OTK * 2 }

我开始使用PowerShell,并使用“For循环”创建条件逻辑。当我运行脚本时,没有结果。但是,如果我用一个公式替换这三个函数,它就会起作用。 以下是脚本:

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-和$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
}

$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中,相等比较运算符是
-eq
-ieq
-ceq

=
是赋值。相等检查是
-eq
。你期望得到什么样的结果?您从未在代码中为
$MAF
赋值。此循环用于在
$OTK
不断增加时计算MAF的值。这三个函数可以替换为
$MAF=($OTK*2*$OMAT/5)*$OMAF/5
那么为什么要使用这个函数呢?你想实现什么,什么不能通过
$MAF=($OTK*2*$OMAT/5)*$OMAF/5实现?我想制作一些包含一些函数的模块。脚本可以从模块中调用不同的函数。脚本中的函数可以被另一个函数替换,而不会影响脚本的其他部分。就像一个模块化的程序。这就是我不想使用单一公式的原因。我希望它能解释我要做的事情。我上面脚本中的每个函数稍后都会放到模块中。这将是我问的第二个问题。