【发布时间】:2012-06-10 03:31:39
【问题描述】:
一些事实:
当您将对象分配给名为 $a 的变量,然后其中一个属性发生更改时,变量 $a 会更新。
但是当我将对象的 属性 $object.property(而不是对象本身)的值分配给名为 $b 的变量,然后 $object.property 发生变化时,$b 不会得到更新。这意味着,当前值存储在 $object.property 中,但 $b 保持原样。
一个例子:
我将一个Window 对象分配给一个名为$bochsWindow 的变量。然后由于我移动了窗口,一些属性发生了变化。但是当我打印出$bochsWindow 时,您可以看到它是最新的——也就是说,对象属性的所有新值也都存储在$bochsWindow 中。
但如果尝试将$bochsWindow 的属性存储在名为$posX 的变量中,然后属性发生变化,$posX 不会发生变化。
PS .> $bochsWindow = (GetProcess bochs | Get-Window)
PS .> $bochsWindow
ProcessId : 1536
ProcessName : bochs
Position : {X=54,Y=32,Width=650,Height=576}
IsMinimized : False
IsMaximized : False
WindowHandle : 3933134
Caption : Bochs for Windows - Display
[[Moving Boch's Window By Hand]]
PS .> $bochsWindow
ProcessId : 1536
ProcessName : bochs
Position : {X=0,Y=0,Width=650,Height=576}
IsMinimized : False
IsMaximized : False
WindowHandle : 3933134
Caption : Bochs for Windows - Display
PS .> (Get-Window -ProcessName bochs)
ProcessId : 1536
ProcessName : bochs
Position : {X=0,Y=0,Width=650,Height=576}
IsMinimized : False
IsMaximized : False
WindowHandle : 3933134
Caption : Bochs for Windows - Display
PS .> $posX = $bochsWindow.Position.X
PS .> $posX
302
[[Moving Boch's Window By Hand]]
PS .> $posX
302
PS .> $bochsWindow.Position.X
472
PS .>
但是,如果我希望 $posX 保持最新并始终存储新值 (472) 而不是 302,我该怎么办
我的问题:
我想将对象属性的引用存储在变量中。这意味着,我希望每次对象的属性更改时都更新变量。我怎样才能做到这一点?谢谢。
【问题讨论】:
标签: shell pointers powershell command-line reference