gpt4 book ai didi

shell - PowerShell:如何创建对象属性的引用

转载 作者:行者123 更新时间:2023-12-04 23:06:34 26 4
gpt4 key购买 nike

一些事实:
当您将对象分配给名为 $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我的问题:
我想在一个变量中存储一个对象属性的引用。这意味着,我希望每次对象的属性更改时都会更新变量。我怎样才能做到这一点?谢谢。

最佳答案

使用 PSBreakpoint 的方法很重要,但这是我唯一知道的:

$global:bochsWindow = (GetProcess bochs | Get-Window) 
$act= @'
$global:b = $bochsWindow.Position.X
'@
$global:sb = [scriptblock]::Create($act)
$global:b = Set-PSBreakpoint -Variable b -Mode Read -Action $global:sb

这样 $b调用时总是更新。

关于shell - PowerShell:如何创建对象属性的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10908763/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com