Remote Invoke-Comando Powershell Stop-WebAppPool Não funciona mais após a atualização do Powershell 5

1

Temos um script do PowerShell que desativa um pool de aplicativos remoto por meio dos seguintes comandos:

$appPoolName = "myAppPool"
$server = "myserver.domain.com"

$stopAppPoolScript = {param($appPoolname); Import-Module WebAdministration; Stop-WebAppPool -Name $appPoolName;}
#remotely execute script to stop the app pool
Invoke-Command -ComputerName $server -scriptBlock $stopAppPoolScript -ArgumentList $appPoolname

#sleep for 10 seconds
Start-Sleep -s 10

#print out the status of the app pool
Invoke-Command -ComputerName $server -scriptBlock $checkAppPoolStatusScript -ArgumentList $appPoolname
#always says "Started"

Esse script funcionou por um longo tempo quando o servidor de compilação que está emitindo o comando está no PowerShell 4 e o servidor remoto está no PowerShell versão 2. No entanto, neste fim de semana atualizei o servidor de compilação para o Windows Management Framework 5 ( e Powershell 5) e o comando Stop-WebAppPool parou de funcionar quando executado remotamente via Invoke-Command através do nosso servidor de compilação. Confirmei que da minha máquina local, que também está no PowerShell 5, também não posso emitir esse comando. No entanto, a partir de qualquer máquina que está no Powershell 4 eu posso emitir este comando para o servidor remoto e funciona.

Outras coisas que eu tentei que podem ser pertinentes: * Se eu estabelecer uma sessão remota do PowerShell e emitir o comando interativamente, tudo funcionará bem. * Eu posso executar o comando para verificar o status do pool de aplicativos e funciona bem: Invoke-Command -ComputerName $server -scriptBlock $checkAppPoolStatusScript -ArgumentList $appPoolname * Estabelecer uma sessão e chamar Invoke-Command -Session $mySession... também não ajudou. Ainda não pára o pool de aplicativos.

Qualquer ajuda seria muito apreciada. Eu estou querendo saber se há um problema com o Powershell 5 emitindo comandos remotos para o PowerShell 2 ... ou talvez algo relacionado à segurança mudou ao instalar o Windows Management Framework 5 ... ou ... quem sabe.

    
por jakejgordon 03.10.2016 / 16:54

1 resposta

0

Você pode passar uma configuração para o cmdlet Invoke-Command para que ela use o Powershell 2.

Register-PSSessionConfiguration -Name PS2 -PSVersion 2.0 Invoke-Command -ConfigurationName PS2 -ComputerName $env:computername -ScriptBlock {$PSVersionTable.PSVersion}

Por exemplo

    
por 03.10.2016 / 18:05