Além de procurar despejar $ PSVersionTable e despejar a variável e o ambiente "PS-Drives", o que mais posso fazer para comparar ambientes PowerShell?

Além de procurar despejar $ PSVersionTable e despejar a variável e o ambiente "PS-Drives", o que mais posso fazer para comparar ambientes PowerShell?

Além de procurar despejar $PSVersionTablee despejar a variável e o ambiente "PS-Drives", o que posso fazer para comparar ambientes PowerShell?

Aqui está o problema:

  • Tenho máquinas muito semelhantes executando o Microsoft Windows Server 2012
  • $PSVersionTabledespeja 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
    

    no servidor que funciona, e

    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
    

    no servidor com o qual estou tendo problemas.

  • Não há muita diferença em uma variable:unidade básica.
  • Diferenças razoáveis ​​no env:conteúdo
  • E ambos têm ExecutionPolicy definido como RemoteSigned.

Então as diferenças estão nomenorversão. Mas o primeiro servidor executará o exemplo de classes Animal que vem com oImplantação PSClass, e o segundo não.

E rastreei no depurador até a segunda chamada Attach-PSScriptMethod, seja em um depurador ou não, o segundo servidor simplesmente trava nessa chamada.


Atualizar:Acabei de receber uma alteração para atualizar meu primeiro servidor para Build 6.3.30319.34209, a mesma versão secundária do segundo (e a mesma CLRVersion). Agora o exemplo também quebra. Parece que a Microsoft quebrou a biblioteca PSClass.

Espero que não muitos scripts dependam do modelo OO usado lá, porque se eles quebrassem o exemplo simples, poderiam também ter quebrado código mais pesado.

Eu ainda não consigo nem jogar fora oproblematem

Responder1

Iniciando o Powershell versão 4.0 e superior, você pode usar $PSVersionTable. Qualquer coisa menor que a versão 4.0, você precisaria usarGet-Host

Determinar a versão do Powershell instalada

informação relacionada