获取Powershell变量的内存地址

时间:2014-09-25 11:05:16

标签: powershell memory

如何在Powershell中查看变量引用的基础对象的内存地址?

在C#中,我可以执行类似下面的操作但不确定如何在Powershell中执行等效操作

int i;
int* pi = &i;

这是因为下面这个例子根据脚本块是点源还是使用了调用操作符给出了不同的结果。变量名是相同的,当点源时,更新的值在脚本块退出后保留。这让我想知道当点源实现使用原始变量时,调用操作符实现是否适用于变量的副本。

PS C:\> $n = 1;&{$n = 2};$n
1 
PS C:\> $n = 1;.{$n = 2};$n
2

如果我能做这样的事情,可能会帮助我理解发生的事情......

PS C:\> $n = 1;&{$n.GetMemoryAddress()};
##########
PS C:\> $n = 1;.{$n.GetMemoryAddress()};
##########

2 个答案:

答案 0 :(得分:0)

如果你的真正的问题是找出对象是否被复制,可能你不需要查看它的地址。要确定两个对象是否完全相同,您可以使用Object.ReferenceEquals

[System.Object]::ReferenceEquals($a, $b)

答案 1 :(得分:0)

您无需查看内存地址。调用操作符和点源脚本确实在不同的范围内运行。我在移动设备上,无法轻松为您提供链接,但请运行get - help about_Scopes(或搜索相同的内容)。