$PSVersionTable을 덤프하고 변수 및 환경 "PS-Drives"를 덤프하는 것 외에 PowerShell 환경을 비교하기 위해 무엇을 할 수 있습니까?

$PSVersionTable을 덤프하고 변수 및 환경 "PS-Drives"를 덤프하는 것 외에 PowerShell 환경을 비교하기 위해 무엇을 할 수 있습니까?

변수 및 환경 "PS-Drives" 를 덤프 $PSVersionTable하고 덤프하는 것 외에 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 클래스 예제를 실행합니다.PSClass 배포, 두 번째는 그렇지 않습니다.

그리고 디버거에서 에 대한 두 번째 호출을 추적했는데 Attach-PSScriptMethod, 디버거에 있든 없든 두 번째 서버는 해당 호출에 응답하지 않습니다.


업데이트:첫 번째 서버를 두 번째 서버와 동일한 마이너 버전(및 동일한 CLRVersion)인 빌드 6.3.30319.34209로 업데이트하도록 변경했습니다. 이제 예제도 깨졌습니다. Microsoft가 PSClass 라이브러리를 깨뜨린 것 같습니다.

너무 많은 스크립트가 거기에 사용된 OO 모델에 의존하지 않기를 바랍니다. 왜냐하면 간단한 예를 깨뜨렸다면 더 무거운 코드도 깨뜨릴 수 있었기 때문입니다.

아직은 버릴 생각도 못하고문제그것은 가지고있다

답변1

Powershell 버전 4.0 이상부터 $PSVersionTable을 사용할 수 있습니다. 버전 4.0 미만인 경우에는 다음을 사용해야 합니다.Get-Host

설치된 Powershell 버전 확인

관련 정보