我想使用 PowerShell 在 Windows7 64 位上管理我的 IIS7。
我尝试安装 IIS7 Powershell 管理单元 http://www.iis.net/download/PowerShell
我“以管理员身份运行”,然后键入下面列出的命令:msiexec/I iis7psprov_x64.msi,但收到此错误消息:“PowerShell 管理单元是 Windows 操作系统的一部分。请通过程序和功能安装或服务器管理器”
我认为加载 WebAdministration 模块不需要此特定功能,但我激活了“程序和功能 |
”中的所有选项打开或关闭 Windows 功能 |互联网信息服务 |网页管理工具| IIS管理脚本和工具
我做了这些检查:
1.) Power-Shell 已安装
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 {您的执行策略}
PS C:\Program Files\IIS> get-ExecutionPolicy
Unrestricted
3.)导入模块Web管理
PS C:\Program Files\IIS> Import-Module WebAdministration
PS C:\Program Files\IIS>
4.) C:\Windows\System32\WindowsPowerShell\v1.0\Modules\WebAdministration 路径存在
5.) 模块和管理单元
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.) 我在 ps1 文件中尝试
$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 为空,并且“add-pssnapin WebAdministration”生成错误消息:Add-PSSnapin:此计算机上未安装 Windows PowerShell 管理单元“WebAdministration”。
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
对此有什么建议吗?为什么 Add-PSSnapin WebAdministration 失败?
更新: 我很困惑何时使用 Add-PSSnapin 以及何时使用 Import-Module
http://social.technet.microsoft.com/Forums/en/ITCG/thread/3e1ca6e1-d197-4c04-a145-1e922814a618
当然,WebAdministration只是模块,并没有PSSnapin。可能是...
引用文献:
PowerShell IIS 管理单元
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
PowerShell 安装版本
最佳答案
这是我的 profile.ps1 中用于加载 WebAdmin 模块的函数。它涵盖 IIS 7 和 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
}
}
}
关于powershell - Windows7 中的 Add-PsSnapin WebAdministration,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10700660/