从点源文件设置静态成员



虽然从点源的ps1文件中获取静态成员的值总是有效的,但设置静态成员似乎不一致。

test.ps1:

class A
{
static $val
A()
{
[A]::val = "empty"
}
}
$A = [A]::new()
write-host $([A]::val)
[A]::val = "test"
. .test2.ps1
write-host $([A]::val)

test2.ps1

[A]::val = "val"

控制台输出:

empty
test

我期望的控制台输出:

empty
val
因此,我在test2.ps1中添加了一个write-host:
[A]::val = "val"
write-host $([A]::val)

然后再运行一遍:

empty
val
val

好吧,我对自己说。
我从test2中删除了write-host。ps1和我得到另一个意想不到的控制台输出:

empty
val

我错过什么了吗?

正如Santiago Squarzon所指出的,我只需要重新启动我的代码编辑器(VSCode)和我正在执行脚本的终端来启动一个新的PSSession。在我这样做之前,我找到了一种方法来规避这个问题;;

test.ps1

...
$x = ""
. .test2.ps1
[A]::val = $x
...

test2.ps1

$x = "val"