11

PowerShell を学習していて、リモート サーバーで IIS を停止しようとしています。

管理者モードで起動した 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 }

リモート サーバーへの接続に失敗し、次のエラー メッセージが表示されました: クライアントは、要求で指定された宛先に接続できません。宛先のサービスが実行中であり、要求を受け入れていることを確認します。宛先で実行されている WS-Management サービスのログとドキュメントを参照してください。最も一般的なのは IIS または WinRM です。宛先が WinRM サービスの場合は、宛先で次のコマンドを実行して、WinRM サービスを分析および構成します: "winrm quickconfig"。詳細については、about_Remote_Troubleshooting ヘルプ トピックを参照してください。

編集2

私はこれを見つけました、そしてそれはうまくいくようです。Stop-Service から情報を取得する方法がわからないため、別の方法で取得する必要がありました。方法をご存知でしたら教えてください。

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

これは機能します。理由がわかりません。私が考えることができる唯一のことは、それ以外の場合はサーバーを停止しないため、-Force を使用する必要があったことです。それが理由でしょうか?

4

5 に答える 5

9

IIS を停止するには (iis-Manager のサーバーで「右クリック > 停止」など):

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 だけがオプションです!!! 参考までに: gsv=get-service、sasv=start-service、spsv=stop-service、pa=passThru)

于 2016-02-22T14:54:45.790 に答える
8

iisreset を使用して、iis をリモートで停止/再起動できます。

iisreset [computername]
于 2012-05-24T12:27:42.900 に答える
7
Invoke-Command -ComputerName myserver { Stop-Service W3SVC}
于 2012-05-23T21:12:43.120 に答える
2

PsExec \Server2 -u Administrator -p somePassword IISReset /STOP を使用してみてください

または PowerGUI スクリプト エディターを使用する

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

使ってみて

$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()
于 2012-05-23T21:09:31.877 に答える