2009-08-31 4 views
11

Ich habe zwei Server Server A und Server B. Ich möchte Server A von Server B Remote mithilfe Powershell-Skript stoppen.Wie starte ich IIS 6.0/7.0 remote mit PowerShell-Skripten?

+0

Wir benötigen weitere Informationen zur Konfiguration Ihrer Domain. Funktionieren beide Server in der gleichen Domäne, in der ein einzelnes Benutzerkonto über gleichwertige Berechtigungen auf dem Server verfügt? –

+0

Auch diese Frage sollte wahrscheinlich auf Serverfehler verschoben werden. –

Antwort

14

Eine der einfachsten Möglichkeiten, dies zu tun, ist wirklich nur mit einer Befehlszeilenausführung mit PsExec. Und schicken Sie über die Maschinen

IISReset/STOP oder/START oder/NEUSTART

So können Sie so etwas wie diese

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

Nur vorsichtig sein, mit Passwort-Management tun würden, wenn Sie diesen Weg gehen oder Jede Route, die eine Art Identitätswechsel auf Administratorebene beinhaltet, sodass niemand eine Kopie des Administratorkennworts als Nur-Text-Kopie erhalten kann.

9

Weil Sie für Powershell gestellt:

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

diese Frage Vereinbarte sollte ServerFault bewegt werden.

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 Power 2.0, den folgenden von der Befehlszeile aus:

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

Option 1:

iisreset remotepcname /restart 

Option 2:

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

Option 3:

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

Perfekte Antwort. Vielen Dank. –

0

Sie erhalten-wmiobject cmdlt mit anderen Namespace für verschiedene Versionen von IIS v6 oder v7 verwenden können, können unter Pipelining Befehl für solche Operationen in IIS lokal oder remote

für 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() 
verwendet werden

Sie müssen ausreichende Zugriffsrechte für diese Operationen haben, Event obwohl ich lieber $ x.Recycle() für meine Websites tun.