web-dev-qa-db-ja.com

PowerShellスクリプトを使用してリモートでIIS 6.0 / 7.0を開始/停止する方法は?

サーバーAとサーバーBの2つのサーバーがあります。Powershellスクリプトを使用してサーバーBからサーバーAをリモートで停止したいと思います。

11
Selwyn

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

IISReset/STOPまたは/ STARTまたは/ RESTART

だからあなたはこのようなことをするでしょう

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

このルート、または管理者レベルのアカウントのなりすましを伴うルートを使用する場合は、パスワード管理に注意してください。これにより、管理者パスワードのプレーンテキストコピーを誰も取得できなくなります。

14
Chris Marisic

オプション1:

iisreset remotepcname /restart

オプション2:

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

オプション3:

Invoke-Command -ComputerName remotepc -ScriptBlock {iisreset}
11
shaiju

Powershellを要求したため:

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

この質問はServerFaultに移動する必要があることに同意しました。

9
fenster
$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
3
Eric Halsey

PowerShell 2.0では、cmdPromptから次を実行します。

invoke-command -computername <yourremoteservername> -scriptblock {iisreset}
2
kailash

IIS v6またはv7のバージョンごとに、異なる名前空間でget-wmiobject cmdltを使用できます。以下のパイプラインコマンドは、ローカルまたはIISリモートで

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

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

0
Abdullah Shahin