在 Windows 7 上使用 IISAdministration PowerShell cmdlet 时出错

在 Windows 7 上使用 IISAdministration PowerShell cmdlet 时出错

我需要在 Windows 7 上使用新的 IISAdministration PowerShell cmdlet 来开发和调试脚本。由于默认情况下 Windows 7 上不存在此模块,因此我尝试安装它。为此,我安装了 Windows Management Framework 5.1,以确保我拥有带有 PowerShellGet 模块的 PowerShell 5.1。

之后,我使用以下命令安装了 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

我的设置有什么问题?如何修复?

答案1

您是否安装了远程服务器管理工​​具 (RSAT)?

如果您没有安装这些工具,这可能是您的问题。

https://support.microsoft.com/en-gb/help/2693643/remote-server-administration-tools-rsat-for-windows-operating-systems

答案2

经过深入研究,我找到了问题的真正原因。我的机器上的 Microsoft.Web.Administration.dll 程序集版本错误:

c:\Windows\assembly\GAC_MSIL\Microsoft.Web.Administration\7.0.0.0__31bf3856ad364e35\Microsoft.Web.Administration.dll

该文件的版本为 ,6.1.7601.17514而程序集版本为7.0.0.0。该文件没有SSLFlags声明枚举类型,这导致了问题。

8.5.9600.17042我通过用从另一台机器获取的文件版本(具有相同的程序集版本)替换此文件来解决了该问题。

答案3

我同意 Lex Li 上述的评论:将 DLL 从较新的服务器操作系统带到较旧的服务器操作系统会带来麻烦。

我的网站安装脚本是在 Windows 10 上构建的,原本应该只在 Windows 2012 及更高版本上使用,但我发现 Windows 2008-R2 服务器需要该网站的副本,并且无法导入IIS管理,给出上面列出的OP错误。

解决方法:下载并安装模块。

取决于你需要什么IIS管理模块,您可能能够在 Carbon 模块中找到可行的替代品。就我而言,我仅将 IISAdministration 用于 Get-IISAppPool cmdlet。事实证明,Carbon 具有功能类似的 Get-IisAppPool cmdlet,它在 Windows 2008-R2 上为我完成了这项工作。

你可以通过访问模块的网站找到 Carbon 模块。我使用了 Chocolatey,安装起来非常轻松。

http://get-carbon.org/about_Carbon_Installation.html

希望这对某些人有帮助,我发现这个问题得到了相当多的点击。

相关内容