除了查看轉儲$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