We have a PowerShell script that takes down a remote app pool via the following commands:
$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"
This script has worked for a very long time when the build server that is issuing the command is on PowerShell 4 and the remote server is on PowerShell version 2. However, this weekend I upgraded the build server to Windows Management Framework 5 (and Powershell 5) and the Stop-WebAppPool command stopped working when ran remotely via Invoke-Command via our build server. I confirmed that from my local machine which is also on PowerShell 5 I also cannot issue this command. However, from any machine that is on Powershell 4 I CAN issue this command to the remote server and it works.
Other things I've tried that may be pertinent:
* If I establish a remote PowerShell session and issue the command interactively it works fine.
* I can run the command to check the app pool status and it works fine: Invoke-Command -ComputerName $server -scriptBlock $checkAppPoolStatusScript -ArgumentList $appPoolname
* Establishing a session and then calling Invoke-Command -Session $mySession...
didn't help either. It still does not stop the app pool.
Any help would be greatly appreciated. I'm wondering if there's an issue with Powershell 5 issuing remote commands to PowerShell 2... or maybe something related to security changed when installing Windows Management Framework 5... or... who knows.