当指定给Powershell的另一个变量发生更改时,防止Powershell更新原始变量
这是一个演示代码。当我在函数中操作当指定给Powershell的另一个变量发生更改时,防止Powershell更新原始变量,powershell,Powershell,这是一个演示代码。当我在函数中操作$tempHash时,$ReferenceHash也会不断变化。我认为这是因为它使用相同的内存位置。我希望防止这种行为,以便在代码后面使用$RefenceHash将$tempHash的值还原为原始值 也许是简单的事情,但我该怎么做呢 $ReferenceHash = @{PD="PROD";NP="NonProd";SB="Sandbox"} $tempHash = $ReferenceHash $value = "SB" function Spit-NewH
$tempHash
时,$ReferenceHash
也会不断变化。我认为这是因为它使用相同的内存位置。我希望防止这种行为,以便在代码后面使用$RefenceHash
将$tempHash
的值还原为原始值
也许是简单的事情,但我该怎么做呢
$ReferenceHash = @{PD="PROD";NP="NonProd";SB="Sandbox"}
$tempHash = $ReferenceHash
$value = "SB"
function Spit-NewHash ($tmp, $val)
{
$tmp.remove($val)
Return $tmp
}
$hash = Spit-NewHash -tmp $tempHash -val $value
$ReferenceHash
我想你要找的是
Clone()
回应是
Name Value
---- -----
NP NonProd
SB Sandbox
PD PROD
我想你要找的是
Clone()
回应是
Name Value
---- -----
NP NonProd
SB Sandbox
PD PROD
$ReferenceHash
和$tempHash
均未更改。它们所指的哈希表
。解决方法是不要让它们引用相同的哈希表
实例。您需要将第一个实例复制到第二个实例。赋值所做的只是创建对第一个的新引用。$tempHash=$ReferenceHash
-->$tempHash=$ReferenceHash.Clone()
和$tempHash
都没有更改。它们所指的哈希表
。解决方法是不要让它们引用相同的哈希表
实例。您需要将第一个实例复制到第二个实例。赋值所做的只是创建对第一个的新引用。$tempHash=$ReferenceHash
-->$tempHash=$ReferenceHash.Clone()