我遇到了PowerShell变量的问题。
我的情景是,
在函数内部,我声明变量$a
,而不是在开关中,我得到一个值并将其存储到变量$a
。
现在在该函数的另一个开关中,我想比较$a
。但是$a
返回null。
示例代码如下:
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"
}
}
}
这个问题的解决方案是什么?
答案 0 :(得分:1)
您的代码存在多个问题。
主要问题可能是您在交换机中使用的$param
尚未设置。同样适用于$Fetch
。另一个问题是,您的$New-Data
变量包含一个您应该替换为下划线或使用大括号围绕(如${New-Data}
。
此外,//
不会引入评论,您必须使用哈希#
。