Preciso usar os novos cmdlets IISAdministration PowerShell no Windows 7 para desenvolver e depurar scripts. Como esse módulo não existe no Windows 7 por padrão, tentei instalá-lo. Para isso, instalei o Windows Management Framework 5.1 para garantir que tenho o PowerShell 5.1 com o módulo PowerShellGet disponível.
Depois disso, instalei o módulo IISAdministration usando este comando:
Install-Module -Name IISAdministration
Ele não relata nenhum erro, mas quando tento listar os módulos disponíveis, não mostra nenhum cmdlet instalado:
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...}
Posso ver cmdlets na coluna ExportedCommands ao executar este comando em minha máquina Windows Server 2012 R2 de produção.
Quando tento importar o módulo em um script ou diretamente no console do PowerShell, estou recebendo este erro:
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
O que há de errado com minha configuração e como corrigi-la?
Você instalou as Ferramentas de Administração de Servidor Remoto (RSAT)?
Se você não tiver essas ferramentas instaladas, esse pode ser o seu problema.
https://support.microsoft.com/en-gb/help/2693643/remote-server-administration-tools-rsat-for-windows-operating-systems
Concordo com o comentário postado acima por Lex Li: trazer DLLs de um sistema operacional de servidor mais recente para um mais antigo é causar problemas.
Meu script de instalação do site foi construído no Windows 10 e deveria ser usado apenas no Windows 2012 e superior, mas encontrei um servidor Windows 2008-R2 que precisava de uma cópia do site e não importava IISAdministration , dando o erro OP listado acima.
Solução alternativa: baixe e instale o módulo Carbon .
Dependendo do que você precisa do módulo IISAdministration , você pode encontrar um substituto viável no módulo Carbon. No meu caso, eu estava usando o IISAdministration apenas para o cmdlet Get-IISAppPool. Acontece que o Carbon tem um cmdlet Get-IisAppPool funcionalmente semelhante que fez o trabalho para mim no Windows 2008-R2.
Você pode encontrar o módulo Carbon visitando o site do módulo. Eu usei Chocolatey e foi uma instalação indolor.
http://get-carbon.org/about_Carbon_Installation.html
Espero que isso ajude alguém, vejo que a pergunta está recebendo um número razoável de acertos.
Depois de olhar mais fundo, encontrei a causa real do problema. A versão do assembly Microsoft.Web.Administration.dll estava errada na minha máquina:
A versão deste arquivo é
6.1.7601.17514
igual enquanto a versão do assembly é7.0.0.0
. Este arquivo não tem oSSLFlags
tipo enum declarado e isso causou o problema.Resolvi o problema substituindo este arquivo pela versão do arquivo
8.5.9600.17042
(com a mesma versão do assembly) obtida de outra máquina.