2012-05-23 17 views
6

私はPowerShellを学び、リモートサーバー上でIISを停止しようとしています。PowerShellでIISを停止する方法?

adminモードで起動したPowerGUI Script Editorを使用しています。

私はこのコード

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

状態が常に実行として戻ってくる必要があります。私はなぜそれが止まらないのか分からない。クライアントが要求で指定された宛先に接続できません :リモートサーバーに接続する

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

を実行しているときに私が取得

編集

エラーは、次のエラーメッセージで失敗しました。 宛先のサービスが実行されており、 要求を受け入れていることを確認します。宛先、通常はIISまたは WinRMで実行されている WS-Managementサービスについては、ログとドキュメントを参照してください。宛先がWinRMサービスの場合は、宛先で次の コマンドを実行して、WinRMサービスを分析および構成します。 "winrm quickconfig"。詳細については、 about_Remote_Troubleshootingヘルプトピックを参照してください。

EDIT2

私はこれを発見し、動作しているようです。私はStop-Serviceから情報を戻す方法を知らないので、私にそれを手に入れるために別の方法を使わなければなりませんでした。どのように知っていれば教えてください。

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

これは機能します。なぜか分からない。私が考えることができる唯一のことは、それ以外の場合はサーバーを停止しないので、それは理由があるかもしれない--ForForを使用しなければならなかったということですか?

答えて

2

あなたが/停止することができます

$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

私はあなたの第2の方法をすべて準備しました(私は何かを逃した場合、私はもう一度それを試すことができます)。それをやっている間、私はStopServiceの短手メソッドを見ました....あなたのコードと同じ結果を試しました。 – chobo2

+0

サーバの状態($ site.serverState = 3)を3(停止している) – Vishwa

+0

に設定してみることができますか?3に設定します。$サービスを行うときに見ましたが、戻り値は3です。状態の値? – chobo2

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

エラーが発生しました。編集を参照してください。また、この方法と他の方法との違いは何ですか? – chobo2

+0

ここでPowerShellリモーティングについて読むことができます:http://technet.microsoft.com/en-us/magazine /ff700227.aspx –

+0

両方のマシンでこれらの手順を実行する必要がありますか? – chobo2

7

を使用してみてくださいPsExecは\ Server2の-u管理者-p somePassword IISRESET/STOPに

かは、Powerguiスクリプトエディタ

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

を使用してみてくださいiisresetを使用してリモートでiisを再起動してください。

(IISマネージャで、サーバー上の "右クリック>停止" のような)IISを停止し
iisreset [computername] 
+0

私はこれを試しますが、この方法で状態や物を取り戻すにはどうすればいいですか? – chobo2

5

spsv iisadmin,was,w3svc -pa 

は意味:

stop-service -name iisadmin,was,w3svc -passThru # -passThru is optional but basically outputs the result 

(代替:gsv iisadmin,was,w3svc |spsv -pa|sasv -paをサービスを再起動すると、この例では結果を出力しますが、2番目の-paはオプションです!

関連する問題