IIS App Poolsの管理:PowerShellチュートリアル

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モジュールをインポートする必要があります。

PS> Import-Module WebAdministration

これにより、すべてのIISコマンドレットが取り込まれ、IISドライブが作成されます。ここで、ほとんどのアプリケーションプールの構成が行われます。まず、既存のアプリケーションプールが存在するかどうかを確認しましょう。

PS> Get-ChildItem -Path IIS:\AppPools
 
 Name  State. Applications
 ----- ------ -------------
 GHI  Started

PowerShellで新しいIISアプリケーションプールを作成する

すでにGHIという名前のアプリケーションプールがあるようです。もう1つ作成したいかもしれません。IISドライブを使用すると、これが非常に簡単に行えます。単にNew-Itemを使用してパスを指定します。

PS> New-Item -Path IIS:\AppPools\MyAppPool
 
 Name      State.  Applications
 -----     ------  -------------
 MyAppPool Started

アプリケーションプールのプロパティの検査と変更

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.

Get-ItemProperty IIS:\AppPools\MyAppPool | select *

アプリケーションプールを取得し、プロパティを表示したので、プロパティを変更してみましょう。たとえば、アプリケーションプールで特定の.NETランタイムバージョンを使用したいとします。再びIISドライブを使用し、ファイルシステムやレジストリ、証明書など、PowerShellドライブにある他のすべてのものと同様に、Set-ItemPropertyを使用してアプリケーションプールを管理できます。

PS> Set-ItemProperty -Path IIS:\AppPools\MyAppPool -Name managedRuntimeVersion -Value 'v4.0'

Set-ItemPropertyを使用することで、アプリケーションプールのほとんどすべてのプロパティを変更できます。

PowerShellでアプリケーションプールを削除する

最後に、アプリケーションプールの削除が完了しました。今度は、Remove-WebAppPoolという組み込みのPowerShellコマンドレットを使用します。単に名前を指定すれば、アプリケーションプールは削除されます!

Remove-WebAppPool -Name MyAppPool

すべてのこのコードはローカルで実行されていましたが、リモートのIISサーバーで実行する必要がある場合はどうでしょうか? ここで、PowerShellリモートが役立ちます。これを行うためには、すべてのこのコードをスクリプトブロックにまとめ、Invoke-Commandを使用してリモートサーバーで実行する必要があります。

$appPoolName = 'MyAppPool'
 $scriptBlock = {
    Import-Module WebAdministration
    New-Item -Path IIS:\AppPools\$using:appPoolName
    Set-ItemProperty -Path IIS:\AppPools\$using:appPoolName -Name managedRuntimeVersion -Value 'v4.0'
    Remove-WebAppPool -Name $using:appPoolName
 }
 
 Invoke-Command -ComputerName SOMEIISSERVER -ScriptBlock $scriptBlock

機能的ではありませんが、このコードはMyAppPoolという名前の新しいアプリプールを作成し、プロパティを設定してから削除します。 $using変数を使用していることに注意してください。スクリプトブロック内のコードがリモートコンピューターで実行されるため、PowerShellはこの変数を展開してローカルで宣言された$appPoolNameの実際の値を使用するために必要です。

IISの管理について詳しく学びたい場合は、Technet IIS Administrationページをチェックしてください。そこには、WebAdministrationモジュールに含まれるすべてのコマンドレットとその使用方法が記載されています。

Source:
https://adamtheautomator.com/powershell-iis-2/