除了查看轉儲 $PSVersionTable 和轉儲變數和環境「PS-Drives」之外,我還能做些什麼來比較 PowerShell 環境?

除了查看轉儲 $PSVersionTable 和轉儲變數和環境「PS-Drives」之外,我還能做些什麼來比較 PowerShell 環境?

除了查看轉儲$PSVersionTable和轉儲變數和環境「PS-Drives」之外,我還能做些什麼來比較 PowerShell 環境?

問題是這樣的:

  • 我有運行 Microsoft Windows Server 2012 的非常相似的計算機
  • $PSVersionTable轉儲為:

    Name                           Value
    ----                           -----
    PSVersion                      4.0
    WSManStackVersion              3.0
    SerializationVersion           1.1.0.1
    CLRVersion                     4.0.30319.34014
    BuildVersion                   6.3.9600.17090
    PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0}
    PSRemotingProtocolVersion      2.2
    

    在有效的伺服器上,並且

    Name                           Value
    ----                           -----
    PSVersion                      4.0
    WSManStackVersion              3.0
    SerializationVersion           1.1.0.1
    CLRVersion                     4.0.30319.34209
    BuildVersion                   6.3.9600.16406
    PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0}
    PSRemotingProtocolVersion      2.2
    

    在我遇到問題的伺服器上。

  • 基本驅動器沒有什麼區別variable:
  • env:內容的合理差異
  • 並且它們都將 ExecutionPolicy 設為 RemoteSigned。

所以差異在於次要的版本。但是第一個伺服器將運行附帶的 Animal 類別範例PS類部署,第二個不會。

我已在調試器中跟踪到對 的第二次調用Attach-PSScriptMethod,無論是否在調試器中,第二個伺服器都會掛起該調用。


更新:剛剛進行了更改,將我的第一台伺服器更新為 Build 6.3.30319.34209,與第二台伺服器具有相同的次要版本(以及相同的 CLRVersion)。現在這個例子也壞了。看來微軟破壞了 PSClass 函式庫。

我希望不要有太多腳本依賴那裡使用的 OO 模型,因為如果它們破壞了簡單的範例,那麼它們也可能破壞了更重的程式碼。

我什至仍然無法將其轉儲出來問題它有

答案1

從 Powershell 4.0 及更高版本開始,您可以使用 $PSVersionTable。任何低於 4.0 版本的版本,您都需要使用Get-Host

確定安裝的 Powershell 版本

相關內容