我正在尝试安装适用于 IIS 7.0 的 Windows PowerShell 管理单元在运行 Server 2008 并安装了 Service Pack 2 的服务器上,所以我可以使用 snappin WebAdministration
。
安装时出现错误
已安装该产品的另一个版本。无法继续安装此版本。配置或删除该产品的现有版本。
Get-PSSnapin 和 Get-Module -ListAvailable 均未显示WebAdministration
,但我确实IIsProviderSnapIn
列出了。此外,作为对在 Windows 2008 R1 上使用 PowerShell 2 和模块进行 IIS 管理返回 False。
这是的旧版本吗WebAdministration
?
它是否在“程序和功能”下列为“适用于 IIS 7.0 的 Microsoft Windows PowerShell 提供程序”?如果是,我可以安全地卸载它,然后从原始链接安装 PowerShell 管理单元吗?
(或者,我可以使用 IIsProviderSnapIn 来获取所有当前正在运行的站点的列表,就像我对Get-Website
inWebAdministration
模块所做的那样?)
答案1
虽然我仍然不确定该IIsProviderSnapIn
管理单元与什么相比WebAdministration
,但我最终得到了一个修改版本的答案
https://stackoverflow.com/questions/1924217/powershell-load-webadministration-in-ps1-script-on-both-iis-7-and-iis-7-5
如果可用则加载WebAdministration
管理单元或模块,否则使用IIsProviderSnapIn
。
$iisVersion = Get-ItemProperty "HKLM:\software\microsoft\InetStp"
$useIISProviderSnappin = $False
if ($iisVersion.MajorVersion -eq 7)
{
if ($iisVersion.MinorVersion -ge 5)
{
Import-Module WebAdministration
}
else
{
if(Get-PSSnapIn -Registered | Where {$_.Name -eq "WebAdministration"})
{
if (-not (Get-PSSnapIn | Where {$_.Name -eq "WebAdministration"}))
{
Add-PSSnapIn WebAdministration
}
}
elseif(Get-PSSnapIn -Registered | Where {$_.Name -eq "IIsProviderSnapIn"})
{
#older versions of server 2008 don't have the webadministration module!
if (-not (Get-PSSnapIn | Where {$_.Name -eq "IIsProviderSnapIn"}))
{
Add-PSSnapIn IIsProviderSnapIn
}
$useIISProviderSnappin = $True
}
else
{
throw "Unable to import any suitable modules... :( "
}
}
}
Function Get-IISWebsite()
{
if($useIISProviderSnappin)
{
return dir iis:\sites
}
else
{
return Get-Website
}
}