2012-05-23 21 views
6

estoy aprendiendo PowerShell y tratando de detener IIS en un servidor remoto.Cómo detener IIS con PowerShell?

estoy usando PowerGUI Editor de secuencias que empecé en el modo de administrador.

tengo este código

$service = Get-WmiObject Win32_Service -ComputerName 'myserver' -Filter "Name='IISAdmin'" 
$service 
$service.StopService(); 
$service.State 

Estado siempre regresa como correr. No sé por qué no se detiene.

Editar

error que consigo cuando se ejecuta

Invoke-Command -ComputerName 'myserver' { Stop-Service IISAdmin } 

Conexión al servidor remoto falló con el siguiente mensaje de error: El cliente no puede conectarse al destino especificado en la solicitud. Compruebe que el servicio en el destino está en marcha y es solicitudes de aceptar. Consulte los registros y la documentación para el servicio WS-Management se ejecuta en el destino, IIS o más comúnmente WinRM. Si el destino es el servicio WinRM, ejecute el siguiente comando en el destino para analizar y configurar el servicio WinRM: "winrm quickconfig". Para obtener más información, consulte el tema de Ayuda de solución de problemas relacionados con about_Remote_Troubleshooting.

Edit2

me encontré con esto y parece que funciona. No sé cómo recuperar la información de Stop-Service, así que tuve que usar la otra vía para obtenerla. Si sabes cómo, por favor házmelo saber.

Stop-Service -Force -InputObject $(Get-Service -Computer myserver -Name IISAdmin) 
$service = Get-WmiObject Win32_Service -ComputerName 'myserver ' -Filter "Name='IISAdmin'" 
$service.State 

Esto funciona. No entiendo por qué. Lo único que puedo pensar es que tuve que usar Fuerza, ya que de lo contrario no detendría al servidor, entonces tal vez esa sea una razón.

Respuesta

2

Trate de usar PsExec \ servidor2 administrador -u -p somePassword IISReset/STOP

o el uso de PowerGUI Script Editor

$service = Get-WmiObject -computer 'ServerA' Win32_Service -Filter "Name='IISAdmin'" 
$service 
$service.InvokeMethod('StopService',$Null) 
$service.State 

Trate de usar

$server = "servername" 
$siteName = "Default Web Site" 
$iis = [ADSI]"IIS://$server/W3SVC" 
$site = $iis.psbase.children | where { $_.keyType -eq "IIsWebServer" -AND 
$_.ServerComment -eq $siteName } 
$site.serverstate=3 
$site.setinfo() 
+0

Probé tu segunda forma todo listo (puedo intentarlo de nuevo si me perdí algo). Mientras hacía eso, vi el método de mano corta para StopService ... Probé tu código y el mismo resultado. – chobo2

+0

¿Puedes intentar establecer el estado del servidor ($ site.serverState = 3) en 3 (que está parado) – Vishwa

+0

cuando lo configuro en 3. Solo estaba buscando cuando realizo $ service veo un valor de retorno de 3. Es eso el valor del estado? – chobo2

2
Invoke-Command -ComputerName myserver { Stop-Service W3SVC} 
+0

Aparece un error, por favor, consulte Edición. ¿Cuál es la diferencia al hacerlo de esta forma, en comparación? – chobo2

+0

Lea acerca de la conexión remota de PowerShell aquí: http: //technet.microsoft.com/en-us/magazine /ff700227.aspx –

+0

¿Tengo que hacer esos pasos en ambas máquinas? – chobo2

7

Puede detener/reiniciar iIS de forma remota con iisreset:

iisreset [computername] 
+0

Lo intentaré pero todavía no estoy seguro de por qué las otras formas t trabajo. ¿Cómo puedo recuperar el estado y cosas de esta manera? – chobo2

5

para detener IIS (como "botón derecho del ratón> parada" en el servidor en el IIS-Manager):

spsv iisadmin,was,w3svc -pa 

significa:

stop-service -name iisadmin,was,w3svc -passThru # -passThru is optional but basically outputs the result 

(alternativa: gsv iisadmin,was,w3svc |spsv -pa|sasv -pa para reiniciar el servicio y da salida al resultado PERO en este ejemplo SÓLO el segundo -pa es opcional !!!FYI: gsv = get-service, sasv = start-service, spsv = stop-service, pa = passThru)

Cuestiones relacionadas