将 PowerShell 字典复制到变量中
Copy PowerShell dictionary into a variable
我正在尝试使用 .clone()
方法将字典克隆到名为 $backUp
的变量中,但失败并显示错误:
Method invocation failed because
[System.Collections.Generic.Dictionary`2[[System.String, mscorlib,
Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089],[System.String, mscorlib,
Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]]
does not contain a method named 'Clone'. At line:10 char:1
+ $backUp = $originalKeyValuePairs.Clone()
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : MethodNotFound
$originalKeyValuePairs = New-Object "System.Collections.Generic.Dictionary``2[System.String,System.String]"
$originalKeyValuePairs.add("key1", "value1")
$originalKeyValuePairs.add("key2", "value2")
$originalKeyValuePairs.add("key3", "value3")
$originalKeyValuePairs.add("key4", "value4")
Write-Output "This is the original dictionary" $originalKeyValuePairs
#Copy the "originalKeyValuePairs" into a variable
$backUp = $originalKeyValuePairs.Clone()
#update the 'key2' value to something else:
$originalKeyValuePairs["key2"] = "tempvalue"
#Now I'm done with updating the values. Now I want to restore my "$backUp" into the $originalKeyValuePairs
$originalKeyValuePairs = $backUp.clone()
Write-Output "Done with updating some of the value in original keyValuePairs and restore 'backUp' dictionary into 'originalKeyValuePairs'. Here is the unmodified dictionary" $originalKeyValuePairs
您需要深拷贝而不是克隆它。查看 this link
$originalKeyValuePairs = New-Object "System.Collections.Generic.Dictionary``2[System.String,System.String]"
$originalKeyValuePairs.add("key1", "value1")
$originalKeyValuePairs.add("key2", "value2")
$originalKeyValuePairs.add("key3", "value3")
$originalKeyValuePairs.add("key4", "value4")
Write-Output "This is the original dictionary" $originalKeyValuePairs
#Copy the "originalKeyValuePairs" into a variable
$ms = New-Object System.IO.MemoryStream
$bf = New-Object System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
$bf.Serialize($ms, $originalkeyvaluepairs)
$ms.Position = 0
$backup = $bf.Deserialize($ms)
$ms.Close()
#update the 'key2' value to something else:
$originalKeyValuePairs["key2"] = "tempvalue"
#Now I'm done with updating the values. Now I want to restore my "$backUp" into the $originalKeyValuePairs
$ms = New-Object System.IO.MemoryStream
$bf = New-Object System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
$bf.Serialize($ms, $backup)
$ms.Position = 0
$originalkeyvaluepairs = $bf.Deserialize($ms)
$ms.Close()
Write-Output "Done with updating some of the value in original keyValuePairs and restore 'backUp' dictionary into 'originalKeyValuePairs'. Here is the unmodified dictionary" $originalKeyValuePairs
我正在尝试使用 .clone()
方法将字典克隆到名为 $backUp
的变量中,但失败并显示错误:
Method invocation failed because [System.Collections.Generic.Dictionary`2[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]] does not contain a method named 'Clone'. At line:10 char:1 + $backUp = $originalKeyValuePairs.Clone() + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : MethodNotFound
$originalKeyValuePairs = New-Object "System.Collections.Generic.Dictionary``2[System.String,System.String]"
$originalKeyValuePairs.add("key1", "value1")
$originalKeyValuePairs.add("key2", "value2")
$originalKeyValuePairs.add("key3", "value3")
$originalKeyValuePairs.add("key4", "value4")
Write-Output "This is the original dictionary" $originalKeyValuePairs
#Copy the "originalKeyValuePairs" into a variable
$backUp = $originalKeyValuePairs.Clone()
#update the 'key2' value to something else:
$originalKeyValuePairs["key2"] = "tempvalue"
#Now I'm done with updating the values. Now I want to restore my "$backUp" into the $originalKeyValuePairs
$originalKeyValuePairs = $backUp.clone()
Write-Output "Done with updating some of the value in original keyValuePairs and restore 'backUp' dictionary into 'originalKeyValuePairs'. Here is the unmodified dictionary" $originalKeyValuePairs
您需要深拷贝而不是克隆它。查看 this link
$originalKeyValuePairs = New-Object "System.Collections.Generic.Dictionary``2[System.String,System.String]"
$originalKeyValuePairs.add("key1", "value1")
$originalKeyValuePairs.add("key2", "value2")
$originalKeyValuePairs.add("key3", "value3")
$originalKeyValuePairs.add("key4", "value4")
Write-Output "This is the original dictionary" $originalKeyValuePairs
#Copy the "originalKeyValuePairs" into a variable
$ms = New-Object System.IO.MemoryStream
$bf = New-Object System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
$bf.Serialize($ms, $originalkeyvaluepairs)
$ms.Position = 0
$backup = $bf.Deserialize($ms)
$ms.Close()
#update the 'key2' value to something else:
$originalKeyValuePairs["key2"] = "tempvalue"
#Now I'm done with updating the values. Now I want to restore my "$backUp" into the $originalKeyValuePairs
$ms = New-Object System.IO.MemoryStream
$bf = New-Object System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
$bf.Serialize($ms, $backup)
$ms.Position = 0
$originalkeyvaluepairs = $bf.Deserialize($ms)
$ms.Close()
Write-Output "Done with updating some of the value in original keyValuePairs and restore 'backUp' dictionary into 'originalKeyValuePairs'. Here is the unmodified dictionary" $originalKeyValuePairs