2010-04-25 33 views
41

Tengo varios sitios configurados en IIS7 en mi máquina de desarrollo de Windows 7 para ejecutarlos en el mismo puerto y, por lo general, solo los ejecuto uno a la vez, dependiendo de en qué estoy trabajando. Me gustaría poder iniciar y detener mis sitios de desarrollo desde PowerShell en lugar de tener abierto el administrador de IIS. ¿Alguien tiene un buen recurso para señalarme en la dirección correcta o un guión que ya lo logra?¿Cómo puedo detener e iniciar sitios web individuales en IIS con PowerShell?

+0

Probablemente hay WMI clases para sitios IIS. – zneak

+0

Supongo que responderé a mi propia pregunta proporcionándome el siguiente enlace. http://technet.microsoft.com/en-us/library/ee790599.aspx –

Respuesta

74

Sólo para referencia futura rápida, los comandos son:

Import-Module WebAdministration 
Stop-WebSite 'Default Web Site' 
Start-WebSite 'Default Web Site' 
+1

Soy un novato total de PowerShell. ¿Debo importar algo antes del código que publicó? Lo que probé fue ejecutar PowerShell y luego escribir el primer cmd que publicaste y PowerShell arrojó un error. –

+1

Después de leer la excepción, dijo que no era necesario que importara Administración web, pero luego me dijo que el 'Nombre del sitio web' de Start-Start no era un cmdlet reconocido. –

+0

¿De dónde sacaste el módulo? – cpoDesign

2

para obtener acceso a los módulos del sistema, Powershell necesita ser ejecutado como esto:

[path]\powershell.exe -NoExit -ImportSystemModules 

me encontré con lo anterior en este iis forum .

10

Agregando a la respuesta de Keith, puede realizar esto de forma remota utilizando Invoke-Command.

Import-Module WebAdministration 
$siteName = "Default Web Site" 
$serverName = "name" 
$block = {Stop-WebSite $args[0]; Start-WebSite $args[0]}; 
$session = New-PSSession -ComputerName $serverName 
Invoke-Command -Session $session -ScriptBlock $block -ArgumentList $siteName 
+0

funciona a la perfección! – hdoghmen

+0

Funciona, pero ¿alguien puede explicar la parte $ args [0]? Thx – ToastMan

+0

@ToastMan $ args es la matriz de argumentos de entrada del bloque de scripts. [Documentos para $ args y otras variables automáticas] (https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_automatic_variables?view=powershell-5.1) – Tim

1

he encontrado que lo siguiente para detener sitios web individuales en un servidor remoto para trabajar:

Invoke-Command -Computername $servername -Scriptblock { 
    (Import-Module WebAdministration); 
    Stop-Website -Name "WebsiteName"; 
    Stop-Website -Name "AnotherWebsiteName" 
} 

que tenían algunos de los errores anteriores hasta Import-Module se puso en ()

+0

Fantástico. ¡Funciona genial! Estaba probando el código exacto sin el paréntesis y no funcionaba, ¡gran descubrimiento! – ToastMan

Cuestiones relacionadas