![除了查看轉儲 $PSVersionTable 和轉儲變數和環境「PS-Drives」之外,我還能做些什麼來比較 PowerShell 環境?](https://rvso.com/image/652672/%E9%99%A4%E4%BA%86%E6%9F%A5%E7%9C%8B%E8%BD%89%E5%84%B2%20%24PSVersionTable%20%E5%92%8C%E8%BD%89%E5%84%B2%E8%AE%8A%E6%95%B8%E5%92%8C%E7%92%B0%E5%A2%83%E3%80%8CPS-Drives%E3%80%8D%E4%B9%8B%E5%A4%96%EF%BC%8C%E6%88%91%E9%82%84%E8%83%BD%E5%81%9A%E4%BA%9B%E4%BB%80%E9%BA%BC%E4%BE%86%E6%AF%94%E8%BC%83%20PowerShell%20%E7%92%B0%E5%A2%83%EF%BC%9F.png)
除了查看轉儲$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