2016-12-02 73 views
1

我試圖在類方法中使用預定義變量,如$ PSVersionTable或$ PSScriptRoot。他們失敗並顯示錯誤消息爲什麼我不能在類方法中使用預定義的變量?

變量未在方法中分配。

例子:

Class Foo { 
    [String]$Version 

    GetVersion() { 
     If ($PSVersionTable) { 
      $this.Version = $PSVersionTable.PSVersion 
     } 
    } 
} 

但是,爲什麼?

回答

1
Class Foo { 
    [String] $Version 

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

$foo = [Foo]::new() 

$foo.GetVersion() 

Write-Host $foo.Version 

對於「爲什麼」部分,我想這與範圍有關。在你的課堂上,你必須以某種方式指定你指的是全局的$PSVersionTable變量,而不是指向類或腳本範圍內的東西。

相關問題