2010-02-11 3 views
6

J'utilise IIS 6.0 et je cherche un moyen d'arrêter/démarrer le pool d'applications. Je sais qu'il existe un stop-appPool pour powershell dans 7.0 mais utilisant 6.0. :-(Alors que quelqu'un a un script Powershell ou d'une autre ligne de commande exe qui arrêtera/démarrer la piscine app?Démarrer/Arrêter App Pool IIS6.0 avec Powershell ou la ligne de commande

Merci.

+3

On dirait que vous pouvez le faire à partir de WMI, vous avez juste besoin de traduire cela en PowerShell: http://blogs.iis.net/chrisad/archive/2006/08/30/Recycling-Application-Pools-using- WMI-in-IIS-6.0.aspx. –

Répondre

7

Ok voilà, je viens d'ajouter un interrupteur pour arrêter la piscine app autre il commence car aucun mal à partir d'une piscine app qui est déjà commencé:

param([string]$appPoolName, [switch]$stop) 

$appPool = get-wmiobject -namespace "root\MicrosoftIISv2" -class "IIsApplicationPool" | where-object {$_.Name -eq "W3SVC/AppPools/$appPoolName"} 

if($appPool) 
{ 
    if($stop) 
    { 
     $appPool.Stop() 
    } 
    else 
    { 
     $appPool.Start() 
    } 
} 
2

Vous pourriez être intéressé par cette bibliothèque Powershell j'ai commencé maintenant:

psDeploy: http://rprieto.github.com/psDeploy/

Entre autres choses, il a beaucoup de cmdlets pour l'automatisation IIS6, par exemple Start-IIS6AppPool, New-IIS6Website ...

J'espère que ça aide!

0

Vous pouvez créer une fonction pour arrêter ou démarrer le pool d'applications à distance comme ci-dessous: basé sur

function StopOrStartAppPool($RemoteServerName, $AppPoolName, $commandWebPool) 
{ 

    if ($commandWebPool -eq "Stop") 
    { 
     $wmiprocess = [wmiclass]"\\$RemoteServerName\root\cimv2:win32_process" 
     $wmiprocess.create("cscript.exe C:\Inetpub\AdminScripts\adsutil.vbs STOP_SERVER W3SVC/AppPools/$AppPoolName -s:$RemoteServerName") 
    } 
    else 
    { 
     $wmiprocess = [wmiclass] "\\$RemoteServerName\root\cimv2:win32_process" 
     $wmiprocess.create("cscript.exe C:\Inetpub\AdminScripts\adsutil.vbs START_SERVER W3SVC/AppPools/$AppPoolName -s:$RemoteServerName")  
    } 
} 
3

Si quelqu'un est à la recherche d'un outil purement de ligne de commande qui ne nécessite pas Powershell, je created such a thing la informations contenues dans ces autres réponses. Puisque la question initiale est spécifiquement à la recherche d'alternatives possibles à la ligne de commande, j'ai pensé que je la partagerais ici.

L'utilisation est assez simple:

IIS6AppPool Start DefaultAppPool 
IIS6AppPool Stop AppPool #1 
IIS6AppPool Recycle Some other app pool 

Source et binaries sont disponibles sur bitbucket. Que ceci sauve quelqu'un d'autre quelques minutes de grattage de tête.

2

Si sur Windows Server 2003, il est plus simple d'utiliser le script fourni iisapp.vbs

CScript.exe C:\WINDOWS\system32\iisapp.vbs /? 
CScript.exe C:\WINDOWS\system32\iisapp.vbs /a MyApp /r 

ou en fonction de votre configuration (par défaut CScript pas WScript), simplement

iisapp /a MyApp /r 

Et bien sûr, est différent dans IIS7

1

Si vous souhaitez le faire à distance, et/ou sur une machine sans PowerShell, vous pouvez modifier le post de script ed here.

Il utilise WMI pour accéder au pool d'applications et le recycler à partir de VBScript. C'est un changement trivial pour faire arrêter/démarrer les piscines au lieu de les recycler, vous avez juste besoin d'appeler .Stop ou .Start sur la piscine de l'application en question.

La viande du script est paraphrasé ci-dessous:

strServer = "LocalHost" 'Server name goes here 
strAppPoolName = "MyAppPool" 'App pool name goes here 

'Connect to the specified server using WMI 
set Locator = CreateObject("WbemScripting.SWbemLocator") 
Locator.Security_.AuthenticationLevel = 6 
set Service = locator.connectserver(strServer,"root/MicrosoftIISv2") 

'Get a collection of WMI apppools 
set APCollection = Service.InstancesOf("IISApplicationPool") 

For each APInstance in APCollection 
    If UCase(ApInstance.Name) = UCase("W3SVC/AppPools/" & strAppPoolName) Then 
     WScript.Echo "Recycling " & strServer & "/" & APInstance.Name 
      ' You can do any of these things depending you what you want to do. 
      APInstance.Recycle 
      APInstance.Stop 
      APInstance.Start 
     End If 
    Next 

Si vous avez une sorte de ligne de commande/toolchain batch que vous souhaitez intégrer dans, vous pouvez exécuter un fichier VBScript en mode ligne de commande appelant:

CScript.exe \NoLogo MyScriptFile.vbs 

le \ NoLogo commutateur supprime les messages de démarrage interpréteur VBScript et en cours d'exécution avec des moyens cscript.exe appelle à WScript.Echo aller à la ligne de commande plutôt que d'une fenêtre pop-up.

Questions connexes