IISウェブサーバのアプリケーションプールを監視する必要がありますか? 以下は、PowerShellを使用してIISでアプリケーションプールを作成する方法に関するガイドです。
おそらく数十、数百のアプリケーションプールを持つIISウェブサーバファームを管理している場合、どこに頼ればよいでしょうか? もちろん、PowerShellスクリプトです! IISの一部としてインストールされているWebAdministrationPowerShellモジュールと、少しのPowerShellリモーティングを使用することで、簡単にアプリケーションプールを作成、変更、削除することができます。
それを実現するためのいくつかの例を見てみましょう。
これまでにPowerShellを使用してIISサーバを管理したことがない場合、ほとんどのコマンドレットにComputerName
があることを期待するかもしれません。残念ながら、これは当てはまりません。
IISサーバをリモートで管理するためには、Invoke-Command
コマンドレットを使用したPowerShellリモーティングを使用する必要があります。これは取り消し条件ではありませんが、コードは少し冗長になる可能性があります。これは、PowerShellでリモートIISサーバを管理するのを躊躇させるものではなく、あくまで情報提供です。
関連記事: Invoke-Command: リモートコードを実行する最良の方法
I know I was pretty frustrated the first time I tried this and didn’t see that familiar ComputerName
parameter on many of the cmdlets.
注:今後、スクリプトブロックに入力するコードを構築します。それから、
Invoke-Command
を使用してこのスクリプトブロックをリモートIISサーバで実行します。
PowerShellを使用してIISアプリケーションプールの一覧を表示します。
Webアプリケーションプールを管理するためには、まずWebAdministrationモジュールをインポートする必要があります。
これにより、すべてのIISコマンドレットが取り込まれ、IISドライブが作成されます。ここで、ほとんどのアプリケーションプールの構成が行われます。まず、既存のアプリケーションプールが存在するかどうかを確認しましょう。
PowerShellで新しいIISアプリケーションプールを作成する
すでにGHIという名前のアプリケーションプールがあるようです。もう1つ作成したいかもしれません。IISドライブを使用すると、これが非常に簡単に行えます。単にNew-Item
を使用してパスを指定します。
アプリケーションプールのプロパティの検査と変更
I’ve now created a new app pool. We can then check all of the properties on that app pool using Get-ItemProperty
and select all of the properties it returns with Select-Object
. This will return all of the property names and values so you can get figure out which ones you need to modify with Set-ItemProperty
.
アプリケーションプールを取得し、プロパティを表示したので、プロパティを変更してみましょう。たとえば、アプリケーションプールで特定の.NETランタイムバージョンを使用したいとします。再びIISドライブを使用し、ファイルシステムやレジストリ、証明書など、PowerShellドライブにある他のすべてのものと同様に、Set-ItemProperty
を使用してアプリケーションプールを管理できます。
Set-ItemProperty
を使用することで、アプリケーションプールのほとんどすべてのプロパティを変更できます。
PowerShellでアプリケーションプールを削除する
最後に、アプリケーションプールの削除が完了しました。今度は、Remove-WebAppPool
という組み込みのPowerShellコマンドレットを使用します。単に名前を指定すれば、アプリケーションプールは削除されます!
すべてのこのコードはローカルで実行されていましたが、リモートのIISサーバーで実行する必要がある場合はどうでしょうか? ここで、PowerShellリモートが役立ちます。これを行うためには、すべてのこのコードをスクリプトブロックにまとめ、Invoke-Command
を使用してリモートサーバーで実行する必要があります。
機能的ではありませんが、このコードはMyAppPoolという名前の新しいアプリプールを作成し、プロパティを設定してから削除します。 $using
変数を使用していることに注意してください。スクリプトブロック内のコードがリモートコンピューターで実行されるため、PowerShellはこの変数を展開してローカルで宣言された$appPoolName
の実際の値を使用するために必要です。
IISの管理について詳しく学びたい場合は、Technet IIS Administrationページをチェックしてください。そこには、WebAdministrationモジュールに含まれるすべてのコマンドレットとその使用方法が記載されています。