$PSVersionTable
ダンプを調べて変数と env「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 に設定されています。
違いはマイナーバージョン。しかし、最初のサーバーは、PSClass の展開、2番目はそうではありません。
そして、デバッガーで の 2 番目の呼び出しまでトレースしましたがAttach-PSScriptMethod
、デバッガー内かどうかに関係なく、2 番目のサーバーはその呼び出しでハングします。
アップデート:最初のサーバーを 2 番目のサーバーと同じマイナー バージョン (および同じ CLRVersion) であるビルド 6.3.30319.34209 に更新する変更が行われました。これで例も壊れます。Microsoft が PSClass ライブラリを壊したようです。
ここで使用されている OO モデルに依存するスクリプトが多すぎないことを願います。単純な例が壊れると、より重いコードも壊れる可能性があるからです。
まだ排出すらできない問題それは
答え1
Powershellバージョン4.0以降では$PSVersionTableを使用できます。バージョン4.0未満の場合は、Get-Host