Was kann ich außer dem Dumpen von $PSVersionTable und dem Dumpen der Variable und Umgebung „PS-Drives“ noch tun, um PowerShell-Umgebungen zu vergleichen?

Was kann ich außer dem Dumpen von $PSVersionTable und dem Dumpen der Variable und Umgebung „PS-Drives“ noch tun, um PowerShell-Umgebungen zu vergleichen?

$PSVersionTableWas kann ich tun, um PowerShell-Umgebungen zu vergleichen, außer mir das Dumping und das Dumping der Variablen und der Umgebung „PS-Drives“ anzusehen ?

Hier ist das Problem:

  • Ich habe sehr ähnliche Maschinen mit Microsoft Windows Server 2012
  • $PSVersionTableDumps als:

    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
    

    auf dem Server, der funktioniert, und

    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
    

    auf dem Server, mit dem ich ein Problem habe.

  • Kein großer Unterschied zum Basislaufwerk variable:.
  • Angemessene Unterschiede im env:Inhalt
  • Und bei beiden ist die ExecutionPolicy auf „RemoteSigned“ eingestellt.

Die Unterschiede liegen also in derunerheblichVersion. Aber der erste Server wird das Tierklassenbeispiel ausführen, das mit demPSClass-Bereitstellung, und der zweite nicht.

Und ich habe es im Debugger bis zum zweiten Aufruf von zurückverfolgt Attach-PSScriptMethod. Ob in einem Debugger oder nicht, der zweite Server bleibt einfach bei diesem Aufruf hängen.


Aktualisieren:Habe gerade eine Änderung erhalten, um meinen ersten Server auf Build 6.3.30319.34209 zu aktualisieren, dieselbe Nebenversion wie der zweite (und dieselbe CLR-Version). Jetzt funktioniert das Beispiel auch nicht mehr. Sieht so aus, als hätte Microsoft die PSClass-Bibliothek kaputt gemacht.

Ich hoffe, dass nicht zu viele Skripte auf dem dort verwendeten OO-Modell basieren, denn wenn sie das einfache Beispiel kaputt gemacht haben, hätten sie genauso gut schwereren Code kaputt machen können.

Ich kann es immer noch nicht einmal dazu bringen, dasProblemes hat

Antwort1

Ab Powershell Version 4.0 und höher können Sie $PSVersionTable verwenden. Bei Versionen unter 4.0 müssen SieGet-Host

Installierte Powershell-Version ermitteln

verwandte Informationen