2009-08-31 19 views
11

Ho due server Server A e Server B. Voglio arrestare il server A dal Server B in remoto usando lo script PowerShell.Come avviare/arrestare IIS 6.0/7.0 in remoto usando gli script di PowerShell?

+0

Abbiamo bisogno di ulteriori informazioni sulla configurazione del tuo dominio. Entrambi i server operano nello stesso dominio che un singolo account utente ha autorizzazioni equivalenti sul server? –

+0

Anche questa domanda dovrebbe probabilmente essere spostata su errore del server. –

risposta

14

Uno dei modi più semplici per eseguire questa operazione è con una semplice esecuzione da riga di comando utilizzando PsExec. E inviare oltre alle macchine

IISReset/STOP o/START o/riavvio

così si potrebbe fare qualcosa di simile

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

Basta essere attenti con la gestione delle password, se seguire questa strada o qualsiasi percorso che coinvolge qualche tipo di rappresentazione di account a livello di amministratore in modo che nessuno possa ottenere una copia di solo testo della password di amministratore.

9

Perché hai chiesto PowerShell:

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

D'accordo a questa domanda dovrebbe essere spostato 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

in PowerShell 2.0, eseguire il seguente dal prompt di cmd:

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

Opzione 1:

iisreset remotepcname /restart 

Opzione 2:

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

Opzione 3:

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

Risposta perfetta. Grazie. –

0

È possibile utilizzare cmdlt get-WmiObject con NameSpace diverso per le diverse versioni di V6 IIS o v7, sotto comando pipelining può essere utilizzato per tali operazioni in IIS localmente o in remoto

per 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() 

è necessario disporre di privilegi di account sufficienti per queste operazioni, evento anche se preferisco fare $ x.Recycle() per i miei siti web.