2009-08-31 17 views
11

Tengo dos servidores, Servidor A y Servidor B. Quiero detener el servidor A desde el Servidor B de forma remota usando el script de Powershell.¿Cómo iniciar/detener IIS 6.0/7.0 de forma remota utilizando los scripts de PowerShell?

+0

Necesitamos más información sobre la configuración de su dominio. ¿Ambos servidores están operando en el mismo dominio que una sola cuenta de usuario tiene permisos equivalentes en el servidor? –

+0

También esta pregunta probablemente debería ser movida a la falla del servidor. –

Respuesta

14

Una de las formas más simples de hacer esto es realmente con solo una ejecución de línea de comandos usando PsExec. Y enviar a las máquinas

IISReset/STOP o/START o/reinicio

Por lo que haría algo como esto

PsExec \\Server2 -u Administrator -p somePassword IISReset /STOP 

Sólo tenga cuidado con la administración de contraseñas si usted va esta ruta o cualquier ruta que implique algún tipo de suplantación de cuenta de nivel de administrador para que nadie pueda obtener una copia de texto sin formato de la contraseña de administrador.

9

porque usted pidió para Powershell:

(Get-WmiObject Win32_Service -ComputerName ServerA -Filter "Name='iisadmin'").InvokeMethod("StopService", $null) 

acordada a esta pregunta debe ser trasladado a ServerFault.

3
$service = Get-WmiObject -computer 'ServerA' Win32_Service -Filter "Name='IISAdmin'" 
$service 
$service.InvokeMethod('StopService',$Null) 
start-sleep -s 5 
$service.InvokeMethod('StartService',$Null) 
start-sleep -s 5 
$service.State 

$service = Get-WmiObject -computer 'ServerB' Win32_Service -Filter "Name='IISAdmin'" 
$service 
$service.InvokeMethod('StopService',$Null) 
start-sleep -s 5 
$service.InvokeMethod('StartService',$Null) 
start-sleep -s 5 
$service.State 
2

En powershell 2.0, ejecute el siguiente desde el indicador de cmd:

invoke-command -computername <yourremoteservername> -scriptblock {iisreset} 
10

Opción 1:

iisreset remotepcname /restart 

Opción 2:

(Get-Service -ComputerName remotepc -Name 'IISAdmin').stop() 

Opción 3:

Invoke-Command -ComputerName remotepc -ScriptBlock {iisreset} 
+0

Respuesta perfecta. Gracias. –

0

Puede utilizar cmdlt conseguir-wmiobject con diferente espacio de nombres para las diferentes versiones del V6 IIS o v7, por debajo de comando pipelining puede ser utilizado para este tipo de operaciones en IIS local o remota

para IIS V6

$srv = "Server Name or IP Address" 

$app = "Name of App Pool" 

$x = get-wmiobject -namespace "root\MicrosoftIISv2" -class "IIsApplicationPool" -ComputerName $srv -Authentication PacketPrivacy | where-object {$_.Name -eq "W3SVC/AppPools/$app"} 

$x.Stop() 

$x.Start() 

for IIS v7 

$srv = "Server Name or IP Address" 

$app = "Name of App Pool" 

$x = Get-WMIObject -Namespace "root\webAdministration" -Class "ApplicationPool" -ComputerName $srv -Authentication PacketPrivacy | Where-Object {$_.Name -eq $app} 

$x.Stop() 

$x.Start() 

necesita tener suficiente privilegio de cuenta para estas operaciones, aunque prefiero hacer $ x.Recycle() para mis sitios web.

Cuestiones relacionadas