web-dev-qa-db-ja.com

コマンドラインからリモートIISアプリプールをリサイクルしますか?

別のマシンで、コマンドラインからIIS7アプリプールをリサイクルすることはできますか?

APPCMD(appcmd recycle apppool my-app-pool)、しかしそれはそれが実行されているホスト、AFAICTでのみ動作します。

Powershellでそれを行う方法があるかもしれないという噂を聞いたが、私はそれについて何も知らず、どうやらそれについてグーグルするのは得意ではないようだ。

必要に応じて、Vista/Server 2008を使用しています。

編集:誰かがAPPCMD自体を実行できると主張している WinRM と呼ばれるものを見つけましたが、正確な方法はまだわかりません。

26
Ken

ケン、これをCMDから実行する場合は PSExec で実行できます。これには、アクセスするサーバーにインストールする必要はありません。

Zip の内容をSystem32ファイルにコピーするだけです(ELUAやリモートFROMするコンピューターのDLLファイルは含めないでください)。
次に CMDを入力
タイプ
Psexec \\{Computer Name of ISS7 Server} %systemroot%\System32\inetsrv\appcmd recycle apppool my-app-pool

ドメイン管理者アカウントの同じドメインにいない場合は、管理アクセス用の資格情報を入力する必要があります。詳細については、引数なしのコマンドラインで単にpsexecと入力してください。

28
Jeff

PowerShellからリモートで実行するには、PowerShellリモート処理を使用するか、WMIを使用する必要があります。

これは、Invoke-WMIMethod PowerShellコマンドレットを使用すると実際には非常に簡単ですが、_-Authentication PacketPrivacy_ ...を指定する必要があります。別の資格情報を指定する必要がある場合は、パラメーター-Credential (Get-Credential) ...を使用して実行できます。ここに例があります:

_$pc = "serverName"

## List the app pools, note the __RELPATH of the one you want to kill:
Get-WMIObject IISApplicationPool 
              -Computer $pc 
              -Namespace root\MicrosoftIISv2 
              -Authentication PacketPrivacy 

## Recycle a specific one:
$Name = "W3SVC/APPPOOLS/ASP.NET v4.0 Classic"  ## This is the Name from above
$Path = "IISApplicationPool.Name='$Name'"      ## This is the __RELPATH

Invoke-WMIMethod Recycle 
                 -Path $Path 
                 -Computer $pc 
                 -Namespace root\MicrosoftIISv2 
                 -Authentication PacketPrivacy
_

それをすべてまとめるために、Nice関数を作成しました。 http://poshcode.org/2466

6
Jaykul

コマンドラインを選択する場合は、 PsExec が解決策のようですが、ミッションクリティカルなタスクの場合はお勧めしません。その理由は次のとおりです。PsExecには problems があり、複数回実行されます。

私はそのような目的でAPIを使用することを好みます。

  1. WMIは、説明されているとおりにこの作業を行います ここ (私のお気に入りのソリューション)。
  2. あるいは、 ServerManager APIを使用できます。対応する資格情報を使用してコードを実行する場合、remoteマシン上のアプリケーションプールを管理できます。
3
Eugene

@Jeffの回答と同様に、Powershellリモーティングでは次のようになります。

Enter-PSSession -ComputerName <your server> -Credential <username, or (Get-Credential)>

次に、インタラクティブセッションで、次のようにします。

appcmd recycle apppool my-app-pool

アプリプールを再起動します。

2
Factor Mystic

PowerShellでAppPoolをリサイクルする

この例では、MSExchangeSyncAppPool

$appPool = Get-WmiObject -Authentication PacketPrivacy -Impersonation Impersonate -ComputerName (hostname) -namespace "root/MicrosoftIISv2" -class IIsApplicationPool | Where-Object {$_.Name -eq "W3SVC/AppPools/MSExchangeSyncAppPool" }
$appPool.Recycle()
0
uz-it