Помимо просмотра свалки $PSVersionTable
и сбросив переменную и env "PS-Drives", что я могу сделать для сравнения сред PowerShell?
Вот в чем проблема:
$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:
содержаниеИтак, различия заключаются в незначительный версия. Но первый сервер будет запускать пример классов Animal, который поставляется с Развертывание PSClass, а второй нет.
И я отследил это в отладчике до второго вызова Attach-PSScriptMethod
в отладчике или нет, второй сервер просто зависает при этом вызове.
Обновить: Только что получил изменение для обновления моего первого сервера до сборки 6.3.30319.34209, той же младшей версии, что и второй (и той же версии CLR). Теперь пример тоже ломается. Похоже, Microsoft сломала библиотеку PSClass.
Я надеюсь, что не слишком много скриптов полагаются на используемую там объектно-ориентированную модель, потому что, если бы они нарушили простой пример, они также могли бы сломать более тяжелый код.
Я все еще не могу заставить его выбросить проблема оно имеет
Начиная с версии Powershell 4.0 и выше, вы можете использовать $ PSVersionTable. Все, что меньше версии 4.0, вам нужно будет использовать Get-Host