PowerShell で IIS 操作を実行しようとしています。お客様は Windows 2008 R2 または SP2 を使用している可能性があります。
残念ながら、Windows 2008 SP2 では Web 管理はスナップインですが、R2 ではモジュールです。
私たちのスクリプトが本番環境の差分サーバーで使用される場合、スクリプトがいずれかのマシンで壊れないようにするにはどうすればよいですか?
PowerShell で IIS 操作を実行しようとしています。お客様は Windows 2008 R2 または SP2 を使用している可能性があります。
残念ながら、Windows 2008 SP2 では Web 管理はスナップインですが、R2 ではモジュールです。
私たちのスクリプトが本番環境の差分サーバーで使用される場合、スクリプトがいずれかのマシンで壊れないようにするにはどうすればよいですか?
pssnapin の存在をテストできます。
if ( [bool]((Get-PSSnapin -Registered) -match 'Webadministration') )
{
add-pssnapin Webadministration
}
else
{
import-module Webadministration
}
モジュールの存在もテストできます。
[bool]((get-module -ListAvailable) -match "Webadministration")
または、wmi を使用して OS をテストできます。
(gwmi Win32_OperatingSystem ).caption
キャプション値に基づいて、pssnapin または mudule を追加します。
編集:
速い方法:
if (!(import-module Webadministration -ea silentlycontinue) #on error return $false
{
add-pssnapin Webadministration
}