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


26

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

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

Powershellでそれを行う方法があるかもしれないという噂を聞きましたが、それについては何も知りません。

問題があれば、Vista / Server 2008を使用しています。

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

回答:


28

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

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

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


4
AppCmd.exeの場所(%systemroot%\ system32 \ inetsrv)は、自動的にPATHの一部ではありません。パスに追加するか、「%systemroot%\ system32 \ inetsrv \ AppCmd.exe」でascmdを実行できます
-ashtonium

1
PsExecのリモートコマンドを引用しません。コマンド名に続けて、スペースで区切られた引数を送信します。コマンドは次のようにする必要がありますので:Psexec \\computer c:\windows\system32\inetsrv\appcmd.exe" recycle apppool AppPoolName
カール・G

6

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

すべてをまとめた素敵な関数を作成しました:http : //poshcode.org/2466


3
root \ MicrosoftIISv2名前空間を使用するには、IIS7で「IIS 6 WMI互換性」を有効にする必要がある場合があります。forums.iis.net/t/1158882.aspx
ブライアンロー

3

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

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

  1. ここで説明するとおり、WMIがジョブを実行します(私のお気に入りのソリューション)。
  2. または、ServerManager API を使用できます。対応する資格情報でコードを実行すると、リモートマシン上のアプリケーションプールを管理できます。

2

@Jeffの答えと同様に、Powershellのリモート処理では次のようになります。

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

次に、対話型セッションで、次に:

appcmd recycle apppool my-app-pool

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


0

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()
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.