2009-08-31 7 views
11

私はサーバAとサーバBの2つのサーバを持っています。私は、サーバBをPowershellスクリプトを使って遠隔から停止したいと思っています。PowerShellスクリプトを使用してリモートからIIS 6.0/7.0を起動/停止するには?

+0

ドメインの設定に関する詳細が必要です。両方のサーバーが同じドメインで動作していて、単一のユーザーアカウントがサーバーに対して同等の権限を持っていますか? –

+0

また、この質問はおそらくサーバーの障害に移動する必要があります。 –

答えて

14

これを行う最も簡単な方法の1つは、実際にはPsExecを使用したコマンドライン実行のみです。そして、マシン

に送っ

IISRESET/STOPまたは/ STARTまたは/あなたはこのルートを行けば

だからあなただけのパスワード管理に注意して、この

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

ような何かをしたい再起動しますか、誰も管理者パスワードのプレーンテキストのコピーを取得できないように、管理者レベルのアカウント偽装を行うルート。

9

あなたはPowerShell用尋ねたので:

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

は、この質問がServerFaultのに移動しなければならないことに合意しました。 PowerShellの2.0で

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

は、CMDプロンプトから次の実行:

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

オプション1:

iisreset remotepcname /restart 

オプション2:

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

オプション3:

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

パーフェクトアンサー。ありがとう。 –

0
あなたがパイプラインコマンド以下のIIS V6またはV7の異なるバージョンの異なる名前空間、と取得-WmiObjectコマンドcmdltを使用することができます

は、ローカルまたはリモート

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() 
ためのIISでこのような操作のために使用することができます

私は自分のWebサイトで$ x.Recycle()を実行するのが好きですが、これらの操作、イベントに対して十分なアカウント権限が必要です。

関連する問題