为什么我不能在类方法中使用预定义的变量?

OCr*_*m85 4 powershell powershell-5.0

我尝试在类方法中使用预定义的变量,如 $PSVersionTable 或 $PSScriptRoot。他们失败并显示错误消息

方法中未分配变量。

例子:

Class Foo {
    [String]$Version

    GetVersion() {
        If ($PSVersionTable) {
            $this.Version = $PSVersionTable.PSVersion
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但为什么?

Dav*_*ant 5

Class Foo {
    [String] $Version

    GetVersion() {
        if ($global:PSVersionTable) {
            $this.Version = $global:PSVersionTable.PSVersion
        }
    }
}

$foo = [Foo]::new()

$foo.GetVersion()

Write-Host $foo.Version
Run Code Online (Sandbox Code Playgroud)

对于“为什么”部分,我想这与范围有关。在您的类中,您必须以某种方式指定您引用全局$PSVersionTable变量,而不是类或脚本范围内的某些内容。