Windows 获取一个值,然后使用该值进行比较
我面临PowerShell变量的问题 我的设想是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
- 在函数中,我声明一个变量
,而在开关中,我得到一个值并将其存储到变量$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,您应该提供一个可复制的代码,而不是一个省略函数主要部分的错误代码段。这样做并不能节省我们的时间——恰恰相反,如果我清除了你所有的错误,代码就会按预期工作。所以我投票结束这个问题。