Назад | Перейти на главную страницу

Удаленная команда вызова Powershell Stop-WebAppPool больше не работает после обновления Powershell 5

У нас есть сценарий PowerShell, который удаляет пул удаленных приложений с помощью следующих команд:

$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"

Этот сценарий работал очень долго, когда сервер сборки, который выдает команду, находится на PowerShell 4, а удаленный сервер - на PowerShell версии 2. Однако в эти выходные я обновил сервер сборки до Windows Management Framework 5 (и Powershell 5. ), а команда Stop-WebAppPool перестала работать при удаленном запуске через Invoke-Command через наш сервер сборки. Я подтвердил, что со своего локального компьютера, который также находится на PowerShell 5, я также не могу выполнить эту команду. Однако с любого компьютера, на котором установлен Powershell 4, я МОГУ отправить эту команду удаленному серверу, и она сработает.

Другие вещи, которые я пробовал, могут быть уместными: * Если я устанавливаю удаленный сеанс PowerShell и запускаю команду в интерактивном режиме, он работает нормально. * Я могу запустить команду, чтобы проверить статус пула приложений, и она отлично работает: Invoke-Command -ComputerName $server -scriptBlock $checkAppPoolStatusScript -ArgumentList $appPoolname * Установление сеанса и последующий звонок Invoke-Command -Session $mySession... тоже не помогло. Он по-прежнему не останавливает пул приложений.

Любая помощь будет принята с благодарностью. Мне интересно, есть ли проблема с Powershell 5, выдающая удаленные команды для PowerShell 2 ... или, может быть, что-то, связанное с безопасностью, изменилось при установке Windows Management Framework 5 ... или ... кто знает.

Вы можете передать конфигурацию командлету Invoke-Command, чтобы он использовал Powershell 2.

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

Например