Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.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
Windows 获取一个值,然后使用该值进行比较_Windows_Powershell_Powershell 5.0 - Fatal编程技术网

Windows 获取一个值,然后使用该值进行比较

Windows 获取一个值,然后使用该值进行比较,windows,powershell,powershell-5.0,Windows,Powershell,Powershell 5.0,我面临PowerShell变量的问题 我的设想是 在函数中,我声明一个变量$a,而在开关中,我得到一个值并将其存储到变量$a 现在在该函数的另一个开关中,我想比较$a。但是,$a返回空值 示例代码如下所示: function fun { [CmdletBinding()] Param ( [Parameter(Mandatory = $true, Position = 0)] [ValidateNotNullOrEmpty()] $param

我面临PowerShell变量的问题

我的设想是

  • 在函数中,我声明一个变量
    $a
    ,而在开关中,我得到一个值并将其存储到变量
    $a

  • 现在在该函数的另一个开关中,我想比较
    $a
    。但是,
    $a
    返回空值

示例代码如下所示:

function fun 
{

  [CmdletBinding()]
  Param (
    [Parameter(Mandatory = $true, Position = 0)]
    [ValidateNotNullOrEmpty()]
    $param       
   )

    $Get_OldData = " " #declare variable

    switch ($param){

        'param_001' {
            $Get_OldData = "test data returned"
        }

        Default {
            $Get_OldData = "test data returned"
        }
    }


    switch ($param){

        'param_001' {
            $New_Data = "New Data"

            #problem is here, can not compare $Get-OldData returns null here
            #though data is assigned 

            if ( $New_Data  -eq $Get_OldData){
                #logic goes here
            }
        }
        Default {
            $New_Data = "New Data"
        }
    }
}
这个问题的解决方案是什么?

您的代码有多个问题

主要问题可能是您在未设置的交换机中使用了
$param
。这同样适用于
$Fetch
。另一个问题是
$New Data
变量包含一个hypen,您可以用下划线替换它,也可以用像
${New Data}
这样的大括号括起来


另外,
/
不引入注释,您必须使用散列
#

您确定
$New Data
?看起来它应该用下划线而不是破折号。@vonPryz我刚才输入错误了谢谢,但是$param设置正确,$New Data是$New\u Data,这是输入错误您在哪里设置
$param
$Fetch
,这个函数有一个参数,$param是通过它传递的……为了节省时间,我不会在我的代码中添加这个参数。同样,对于$fetch,您应该提供一个可复制的代码,而不是一个省略函数主要部分的错误代码段。这样做并不能节省我们的时间——恰恰相反,如果我清除了你所有的错误,代码就会按预期工作。所以我投票结束这个问题。