Además de buscar volcar $PSVersionTable y volcar la variable y el entorno "PS-Drives", ¿qué más puedo hacer para comparar entornos PowerShell?

Además de buscar volcar $PSVersionTable y volcar la variable y el entorno "PS-Drives", ¿qué más puedo hacer para comparar entornos PowerShell?

Además de buscar volcar $PSVersionTabley volcar la variable y el entorno "PS-Drives", ¿qué puedo hacer para comparar entornos PowerShell?

Aquí está el problema:

  • Tengo máquinas muy similares que ejecutan Microsoft Windows Server 2012.
  • $PSVersionTablevolcados como:

    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
    

    en el servidor que funciona, y

    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
    

    en el servidor con el que tengo un problema.

  • No hay mucha diferencia en un variable:disco base.
  • Diferencias razonables en env:el contenido.
  • Y ambos tienen ExecutionPolicy configurado en RemoteSigned.

Entonces las diferencias están en elmenorversión. Pero el primer servidor ejecutará el ejemplo de clases de animales que viene con elImplementación de PSClass, y el segundo no.

Y lo rastreé en el depurador hasta la segunda llamada Attach-PSScriptMethod, ya sea en un depurador o no, el segundo servidor simplemente cuelga en esa llamada.


Actualizar:Acabo de recibir un cambio para actualizar mi primer servidor a la compilación 6.3.30319.34209, la misma versión menor que el segundo (y la misma versión CLR). Ahora el ejemplo también falla. Parece que Microsoft rompió la biblioteca PSClass.

Espero que no muchos scripts dependan del modelo OO utilizado allí, porque si rompieron el ejemplo simple, también podrían haber roto código más pesado.

Todavía no puedo ni conseguir que descargue elproblemaTiene

Respuesta1

A partir de Powershell versión 4.0 y superior, puede utilizar $PSVersionTable. Cualquier versión inferior a la 4.0, deberá usarGet-Host

Determinar la versión de Powershell instalada

información relacionada