我需要在 Windows 7 上使用新的 IISAdministration PowerShell cmdlet 来开发和调试脚本。由于默认情况下此模块在 Windows 7 上不存在,因此我尝试安装它。为此,我安装了 Windows Management Framework 5.1 以确保我有 PowerShell 5.1 和 PowerShellGet 模块可用。
之后,我使用以下命令安装了 IISAdministration 模块:
Install-Module -Name IISAdministration
它不会报告任何错误,但是当我尝试列出可用模块时,它不会显示任何已安装的 cmdlet:
PS D:\> get-module -ListAvailable
Directory: C:\Program Files\WindowsPowerShell\Modules
ModuleType Version Name ExportedCommands
---------- ------- ---- ----------------
Script 1.1.0.0 IISAdministration
Binary 1.0.0.1 PackageManagement {Find-Package, Get-Package, Get-PackageProvider, Get-Packa...
Script 1.0.0.1 PowerShellGet {Install-Module, Find-Module, Save-Module, Update-Module...}
在我的生产 Windows Server 2012 R2 机器上执行此命令时,我可以在 ExportedCommands 列中看到 cmdlet。
当我尝试在脚本中或直接在 PowerShell 控制台中导入模块时,我收到此错误:
PS D:\> Import-Module IISAdministration
Import-Module : Could not load type 'Microsoft.Web.Administration.SslFlags' from assembly
'Microsoft.Web.Administration, Version=7.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.
At line:1 char:1
+ Import-Module IISAdministration
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Import-Module], TypeLoadException
+ FullyQualifiedErrorId : System.TypeLoadException,Microsoft.PowerShell.Commands.ImportModuleCommand
我的设置有什么问题以及如何解决?
您是否安装了远程服务器管理工具 (RSAT)?
如果您没有安装这些工具,这可能是您的问题。
https://support.microsoft.com/en-gb/help/2693643/remote-server-administration-tools-rsat-for-windows-operating-systems
我同意 Lex Li 上面发表的评论:将 DLL 从较新的服务器操作系统带到较旧的操作系统是自找麻烦。
我的网站安装脚本是在 Windows 10 上构建的,应该只在 Windows 2012 及更高版本上使用,但我发现了一个 Windows 2008-R2 服务器,它需要一个站点的副本并且不会导入IISAdministration,给出了错误 OP以上所列。
解决方法:下载并安装Carbon模块。
根据您需要IISAdministration模块的用途,您可以在 Carbon 模块中找到可行的替代品。就我而言,我仅将 IISAdministration 用于 Get-IISAppPool cmdlet。事实证明,Carbon 有一个功能相似的 Get-IisAppPool cmdlet,它在 Windows 2008-R2 上为我完成了这项工作。
您可以通过访问模块的网站找到 Carbon 模块。我使用了 Chocolatey,安装过程很轻松。
http://get-carbon.org/about_Carbon_Installation.html
希望这对某人有所帮助,我看到这个问题得到了相当多的点击。
经过深入研究,我找到了问题的实际原因。我的机器上的 Microsoft.Web.Administration.dll 程序集版本错误:
这个文件的版本是
6.1.7601.17514
即使汇编版本是7.0.0.0
. 该文件没有SSLFlags
声明枚举类型,这导致了问题。8.5.9600.17042
我通过用从另一台机器获取的文件版本(具有相同的程序集版本)替换这个文件解决了这个问题。