ネタ元1:アプリケーションプールを作成する方法 (IIS WMI) (元MS社員 の だどさんのサイト)
ネタ元2:New-WebSite error (iis.net)
ネタ元3: PowerShell Provider for IIS 7.0 (x86) – CTP2 (iis.net)
元MS社員のだどさん が IIS用のWMI + VBScript を使ったWebサイト記事を更新したそうなのですが、
全部これPowerShellでできるんじゃないかと 思い、
iis.net のサイトから、PowerShell Provider for IIS 7.0 (x86) – CTP2 を入手し、
New-AppPool コマンドレットやWmiClassを使って試しにアプリケーションプールを作ってみました。
しかし、どうも動きがおかしいようです。
■VBScriptでIIS7のアプリケーションプールを作成する場合(だどさんのWebサイトで公開中)
Set oWebAdmin = GetObject("winmgmts:root\WebAdministration")
Set oAppPool = oWebAdmin.Get("ApplicationPool")
oAppPool.Create("NewAppPool1")
■PowerShell Provider for IIS 7.0 (x86) – CTP2 を使って、New-AppPoolコマンドレットを使った場合
PS IIS:\> New-AppPool -Name NewApplicationPool1
Name State Applications
---- ----- ------------
NewApplicationPool1
New-AppPool : オブジェクト識別子が有効なオブジェクトを表現していません。
(HRESULT からの例外: 0x800710D8)
発生場所 行:1 文字:12
+ New-AppPool <<<< -Name NewApplicationPool1
ただし、New-AppPoolでエラーになるもののアプリケーションプール自体はIISで作られている
■PowerShell Provider for IIS 7.0 (x86) – CTP2 とWMIを使ってアプリケーションプールを作成した場合
$pool = ([WmiClass]"\\.\root\MicrosoftIISV2:IIsApplicationPoolSetting").CreateInstance()
$pool.Name = "W3SVC/AppPools/NewApplicationPool1"
$options = New-Object System.Management.PutOptions
$options.Type = [System.Management.PutType]::CreateOnly
$pool.Put($options)
"1" 個の引数を指定して "Put" を呼び出し中に例外が発生しました: "null 値の式ではメソッドを呼び出せません。"発生場所 行:1 文字:10+ $pool.Put( <<<< $options)
ただし、WMI版の方は、実際にアプリケーションプールがIIS上で作成されていない。
どうもこれはバグであるという認識はあるようで、次期バージョンのリリースではこのバグは修正される予定とのことです。
IIS7 の PowerShell対応はまだまだこれからですね。
IISのPowerShell化が進むと、Webアプリケーションでシステム組んでいる人はリリース作業が非常に楽になります。
一応、IIS7 + PowerShell に関する情報が非常に少ないので、この情報をUPしておきたいと思います。
コメント
IIS + PowerShellですね。
ほんと、こちらも情報少ないですよね。
[quote]ただし、WMI版の方は、実際にアプリケーションプールがIIS上で作成されていない。[/quote]
PowerShellからWmi使ってもうまくいかないんですか…
だどさんのところでうまくいっているようなので、行けそうな気がするんですけどね。
[quote]どうもこれはバグであるという認識はあるようで、次期バージョンのリリースではこのバグは修正される予定とのことです。 [/quote]
情報ありがとうございます。
また何かわかりましたらよろしくお願いいたします。