PowerShell: Load WebAdministration in ps1 script on both IIS 7 and IIS 7.5 PowerShell: Load WebAdministration in ps1 script on both IIS 7 and IIS 7.5 powershell powershell

PowerShell: Load WebAdministration in ps1 script on both IIS 7 and IIS 7.5


This is probably a bit late to help you, but here is how we do this:

$iisVersion = Get-ItemProperty "HKLM:\software\microsoft\InetStp";if ($iisVersion.MajorVersion -eq 7){    if ($iisVersion.MinorVersion -ge 5)    {        Import-Module WebAdministration;    }               else    {        if (-not (Get-PSSnapIn | Where {$_.Name -eq "WebAdministration";})) {            Add-PSSnapIn WebAdministration;        }    }}


Is it possible to catch the error from one or the other, and do the opposite. Dont have my shell handy but something like:

$succeeded = import-module WebAdministrationif (($succeeded -ne $null) -and ($succeeded.GetType() -eq [System.Exception]) {  #Could not import, trying to snapin  add-pssnapin WebAdministration}

Actually thinking about this a bit more...

$hasSnapin = get-pssnapin | Select { $_.Name.toLower().Trim() = "webadministration" }if ($hasSnapin -ne $null) {  add-pssnapin WebAdministration} else {  import-module WebAdministration}

On the first one, I know the error type check will probably need to be modified. As far as the work going on, this can actually be done in C# by looking in the registry for loaded snapins, or the IIS version installed on the machine and then use the appropriate method.


This is great. All I had to do was add an else so it would add the snap-in when run on Windows 2008. This works in scripts for my situation.

Function Load-WebAdmin {  $webAdminModule = get-module -ListAvailable | ? { $_.Name -eq "webadministration" }  If ($webAdminModule -ne $null) {    import-module WebAdministration  }else{    Add-pssnapin WebAdministration   }}