Add-PsSnapin WebAdministration in Windows7
iis-7.5, powershell, snap-in, web-administration, windows-7
Solution
Here is the function I have in my profile.ps1 for loading the WebAdmin module. It covers IIS 7 and 7.5
# Web administration is loaded as a module on Windows 2008 R2 but as a set of snapins
# for Windows 2008 (not R2)
function Util-Load-Web-Administration
{
$ModuleName = "WebAdministration"
$ModuleLoaded = $false
$LoadAsSnapin = $false
if ($PSVersionTable.PSVersion.Major -ge 2)
{
if ((Get-Module -ListAvailable | ForEach-Object {$_.Name}) -contains $ModuleName)
{
Import-Module $ModuleName
if ((Get-Module | ForEach-Object {$_.Name}) -contains $ModuleName)
{ $ModuleLoaded = $true } else { $LoadAsSnapin = $true }
}
elseif ((Get-Module | ForEach-Object {$_.Name}) -contains $ModuleName)
{ $ModuleLoaded = $true } else { $LoadAsSnapin = $true }
}
else
{ $LoadAsSnapin = $true }
if ($LoadAsSnapin)
{
try
{
if ((Get-PSSnapin -Registered | ForEach-Object {$_.Name}) -contains $ModuleName)
{
if ((Get-PSSnapin -Name $ModuleName -ErrorAction SilentlyContinue) -eq $null)
{ Add-PSSnapin $ModuleName }
if ((Get-PSSnapin | ForEach-Object {$_.Name}) -contains $ModuleName)
{ $ModuleLoaded = $true }
}
elseif ((Get-PSSnapin | ForEach-Object {$_.Name}) -contains $ModuleName)
{ $ModuleLoaded = $true }
}
catch
{
Write-Error "`t`t$($MyInvocation.InvocationName): $_"
Exit
}
}
}
Problem
I want to use PowerShell to administer my IIS7 on Windows7 64 bits. I try install IIS7 Powershell snap-in http://www.iis.net/download/PowerShell I "Run as administrator", then typing the command listed below: msiexec /I iis7psprov_x64.msi but I get this error message: "The PowerShell snap-in is part of Windows Operating System. Please install via Programs and Features or Server Manager" I think this particular feature is not necessary to load the WebAdministration module but I active all options in "Programs and features | turn Windows features on or off | IIS | Web Management Tools | IIS Management Scripts and Tools I do those checks: 1.) Power-Shell is installed ``` PS C:\Program Files\IIS> $Host.Version Major Minor Build Revision ----- ----- ----- -------- 2 0 -1 -1 PS C:\Program Files\IIS> $PSVersionTable Name Value ---- ----- CLRVersion 2.0.50727.5448 BuildVersion 6.1.7601.17514 PSVersion 2.0 WSManStackVersion 2.0 PSCompatibleVersions {1.0, 2.0} SerializationVersion 1.1.0.1 PSRemotingProtocolVersion 2.1 PS C:\Program Files\IIS> get-host Name : ConsoleHost Version : 2.0 InstanceId : 445ad8f5-87fc-48f7-b010-f7faf948b86c UI : System.Management.Automation.Internal.Host.InternalHostUserInterface CurrentCulture : es-ES CurrentUICulture : es-ES PrivateData : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy IsRunspacePushed : False Runspace : System.Management.Automation.Runspaces.LocalRunspace ``` 2.) Set-ExecutionPolicy -ExecutionPolicy {Your Execution Policy} ``` PS C:\Program Files\IIS> get-ExecutionPolicy Unrestricted ``` 3.)Import-Module WebAdministration ``` PS C:\Program Files\IIS> Import-Module WebAdministration PS C:\Program Files\IIS> ``` 4.) C:\Windows\System32\WindowsPowerShell\v1.0\Modules\WebAdministration path exists 5.) Modules and Snap-in ``` PS C:\Program Files\IIS> get-module -listavailable ModuleType Name ExportedCommands ---------- ---- ---------------- Manifest AppLocker {} Manifest BitsTransfer {} Manifest PSDiagnostics {} Manifest TroubleshootingPack {} Manifest WebAdministration {} PS C:\Program Files\IIS> Get-PSSnapin -Registered Name : SqlServerCmdletSnapin100 PSVersion : 2.0 Description : This is a PowerShell snap-in that includes various SQL Server cmdlets. Name : SqlServerProviderSnapin100 PSVersion : 2.0 Description : SQL Server Provider Name : TfsBPAPowerShellSnapIn PSVersion : 2.0 Description : This is a PowerShell snap-in that includes Team Foundation Server cmdlets. PS C:\Program Files\IIS> get-pssnapin Name : Microsoft.PowerShell.Diagnostics PSVersion : 2.0 Description : Este complemento de Windows PowerShell contiene cmdlets de Eventos de Windows y de contador de rendimient o. Name : Microsoft.WSMan.Management PSVersion : 2.0 Description : Este complemento de Windows PowerShell contiene cmdlets (como Get-WSManInstance y Set-WSManInstance) que usa el host de Windows PowerShell para administrar operaciones WSMan. Name : Microsoft.PowerShell.Core PSVersion : 2.0 Description : Este complemento de Windows PowerShell contiene cmdlets usados para administrar los componentes de Window s PowerShell. Name : Microsoft.PowerShell.Utility PSVersion : 2.0 Description : Este complemento de Windows PowerShell contiene cmdlets de utilidad que sirven para manipular datos. Name : Microsoft.PowerShell.Host PSVersion : 2.0 Description : Este complemento de Windows PowerShell contiene cmdlets (como Start-Transcript y Stop-Transcript) proporc ionados para su uso con el host de la consola de Windows PowerShell. Name : Microsoft.PowerShell.Management PSVersion : 2.0 Description : El complemento Windows PowerShell contiene cmdlets de administración para administrar los componentes de Windows. Name : Microsoft.PowerShell.Security PSVersion : 2.0 Description : Este complemento de Windows PowerShell contiene varios cmdlets para la administración de la seguridad de Windows PowerShell. PS C:\Program Files\IIS> [System.Reflection.Assembly]::LoadFrom( "C:\windows\system32\inetsrv\Microsoft.Web.Administration.dll" ) GAC Version Location --- ------- -------- True v2.0.50727 C:\Windows\assembly\GAC_MSIL\Microsoft.Web.Administration\7.0.0.0__31bf3856ad364e35\Microsoft.... PS C:\Program Files\IIS> (New-Object Microsoft.Web.Administration.ServerManager) ApplicationDefaults : Microsoft.Web.Administration.ApplicationDefaults ApplicationPoolDefaults : Microsoft.Web.Administration.ApplicationPoolDefaults ApplicationPools : {DefaultAppPool} SiteDefaults : Microsoft.Web.Administration.SiteDefaults Sites : {Default Web Site} VirtualDirectoryDefaults : Microsoft.Web.Administration.VirtualDirectoryDefaults WorkerProcesses : {} PS C:\Program Files\IIS> (New-Object Microsoft.Web.Administration.ServerManager).Sites ApplicationDefaults : Microsoft.Web.Administration.ApplicationDefaults Applications : {Default Web Site/} Bindings : {[http] *:80:} Id : 1 Limits : Microsoft.Web.Administration.SiteLimits LogFile : Microsoft.Web.Administration.SiteLogFile Name : Default Web Site ServerAutoStart : True State : Started TraceFailedRequestsLogging : Microsoft.Web.Administration.SiteTraceFailedRequestsLogging VirtualDirectoryDefaults : Microsoft.Web.Administration.VirtualDirectoryDefaults Attributes : {name, id, serverAutoStart, state} ChildElements : {bindings, limits, logFile, traceFailedRequestsLogging...} ElementTagName : site IsLocallyStored : True Methods : {Start, Stop} RawAttributes : {[name, Default Web Site], [id, 1], [serverAutoStart, True], [state, 1]} Schema : Microsoft.Web.Administration.ConfigurationElementSchema ``` 6.) I try in ps1 file ``` $succeeded = import-module WebAdministration Write-Host $succeeded if (($succeeded -ne $null) -and ($succeeded.GetType() -eq [System.Exception])) { #Could not import, trying to snapin add-pssnapin WebAdministration } ``` $succeeded is null, and "add-pssnapin WebAdministration" produces error message: Add-PSSnapin : The Windows PowerShell snap-in 'WebAdministration' is not installed on this machine. ``` PS C:\Program Files\IIS> Add-PSSnapin WebAdministration Add-PSSnapin : El complemento WebAdministration de Windows PowerShell no está instalado en este equipo En línea: 1 Carácter: 13 + Add-PSSnapin <<<< WebAdministration + CategoryInfo : InvalidArgument: (WebAdministration:String) [Add-PSSnapin], PSArgum + FullyQualifiedErrorId : AddPSSnapInRead,Microsoft.PowerShell.Commands.AddPSSnapinCommand ``` any suggestions about it ? Why fails Add-PSSnapin WebAdministration ? UPDATE: I'm confused when exactly do I use Add-PSSnapin and when do I use Import-Module http://social.technet.microsoft.com/Forums/en/ITCG/thread/3e1ca6e1-d197-4c04-a145-1e922814a618 surely, WebAdministration is only Module, and has'nt PSSnapin. May be... References: PowerShell IIS Snapin Cannot install Powershell Snap-in http://www.iis.net/download/PowerShell http://learn.iis.net/page.aspx/429/installing-the-iis-powershell-snap-in/ http://learningpcs.blogspot.com.es/2010/08/powershell-iis-7-webadministration.html Versión de PowerShell instalada Determine installed PowerShell version