2012-05-23 17 views
6

Sto imparando PowerShell e sto provando a fermare IIS su un server remoto.Come arrestare IIS con PowerShell?

Sto utilizzando PowerGUI Script Editor che ho avviato in modalità amministratore.

Ho questo codice

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

Stato torna sempre come in esecuzione. Non so perché non si fermi.

Modifica

errore che ottengo quando si esegue

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

Connessione al server remoto non riuscito con il seguente messaggio di errore: Il client non può connettersi alla destinazione specificata nella richiesta. Verificare che il servizio sulla destinazione sia in esecuzione ed è accettare richieste. Consultare i registri e la documentazione per il servizio di gestione WS in esecuzione sulla destinazione, più comunemente IIS o WinRM. Se la destinazione è il servizio WinRM, eseguire il seguente comando sulla destinazione per analizzare e configurare il servizio WinRM: "winrm quickconfig". Per ulteriori informazioni, vedere l'argomento della Guida su problem_Remote_Troubleshooting .

Edit2

Ho trovato questo e sembra funzionare. Non so come recuperare le informazioni dallo Stop-Service, quindi ho dovuto usare l'altro modo per farmelo sapere. Se sai come, per favore fammi sapere.

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

Questo funziona. Non capisco perché. L'unica cosa che riesco a pensare è che dovevo usare -Force in quanto non avrebbe fermato il server altrimenti forse questa è una ragione?

risposta

2

Provare a utilizzare PsExec \ Server2 amministratore -u -p UnaPassword IISReset/STOP

o usando PowerGUI Script Editor

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

Provare a utilizzare

$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

Ho provato il tuo secondo modo tutto pronto (posso provare di nuovo se ho perso qualcosa). Mentre lo facevo ho visto il metodo a mano corta per StopService .... Ho appena provato il tuo codice e lo stesso risultato. – chobo2

+0

Puoi provare a impostare il valore ($ site.serverState = 3) su 3 (che viene fermato) – Vishwa

+0

quando lo imposto a 3. Stavo solo guardando quando faccio $ service Vedo un valore di ritorno di 3. È quello il valore dello stato? – chobo2

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

Ricevo un errore per favore vedere la modifica.Qual è la differenza farlo in questo modo contro l'altro modo? – chobo2

+0

Leggi i servizi remoti di PowerShell qui: http: //technet.microsoft.com/en-us/magazine /ff700227.aspx –

+0

Devo eseguire questi passaggi su entrambe le macchine? – chobo2

7

È possibile interrompere/riavviare iis in remoto con iisreset:

iisreset [computername] 
+0

Cercherò di farlo ma non sono ancora sicuro del motivo per cui gli altri modi non funzionano lavoro. Inoltre, come posso recuperare lo stato e le cose usando in questo modo? – chobo2

5

per fermare IIS (come "rightclick> stop" sul server in 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 per riavviare il servizio e mostra il risultato MA in questo esempio SOLO il secondo -pa è opzionale !!!A proposito: gsv = get-service, sasv = start-service, spsv = stop-service, pa = passThru)

Problemi correlati