web-dev-qa-db-fra.com

Le module d'importation WebAdministration ne se chargera pas à partir d'un script, mais à partir de la ligne de commande

J'arrive sur un projet qui utilise PowerShell pour scripter la construction. La construction utilise le module WebAdministration pour gérer l'instance locale IIS. Lorsque j'exécute le script de génération, l'erreur suivante est générée lors de la tentative d'importation de WebAdministration

Erreur: 06/29/2016 17:28:35: à C:\dev\src\nib-ravendb\build\ConfigureIis.ps1: 10 char: 1 + Module WebAdministration du module d'importation + ~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~ [<< == >>] Exception: Le module spécifié 'WebAdministration' n'a pas été chargé Car aucun fichier de module valide n'était inséré dans un répertoire Du module. ERREUR: 1

Cependant, quand je lance Import-Module WebAdministration sur la ligne de commande PowerShell, le module est importé et je peux utiliser ses fonctionnalités. L'exécution ultérieure du script de génération échoue toujours. 

J'ai IIS 7.5 et PowerShell 4

Quelqu'un at-il une idée de la raison pour laquelle cette importation échouerait dans le script mais pas en ligne de commande et comment la résoudre?

5
Klee

À la fin, il y avait un problème, éventuellement chocolaté?, Tronquait $env:PSModulePath à la première entrée, c’est pourquoi le script fonctionnait si je le tapais mais pas dans le script. 

Je l'ai trouvé en enregistrant $env:PSModulePath à différents endroits des scripts que j'exécutais. 

J'ai corrigé les entrées dans $env:PSModulePath.

Regardez la réponse de @ Richard pour d'autres bonnes suggestions. 

0
Klee

Pour les serveurs, vous devez installer le rôle Management Tools sous Web Server (IIS) pour utiliser le module WebAdministration. Pour voir si vous avez le module disponible, utilisez Get-Module -ListAvailable.

Pour Windows 7 à 10, vous devrez installer la fonctionnalité IIS Management Scripts and tools sous Internet Information Services >> Web Management Tools

Vous pouvez essayer de localiser manuellement le fichier WebAdministration .psd1, puis de l'importer. Utilisez $env:psmodulepath pour localiser vos modules, puis exécutez:

Import-Module -Name 'C:\Windows\System32\WindowsPowerShell\v1.0\Modules\WebAdministration\WebAdministration.psd1' 

Si Server 2008 vous pouvez essayer ce qui suit, mais cela pourrait ne pas fonctionner à partir de 2012: 

Add-PSSnapin WebAdministration

Note Vous devrez exécuter le script avec les droits d’administrateur pour pouvoir charger le module WebAdministration avec Import-Module ou Add-PSSnapin

Vérifiez également que vous avez défini la règle d'exécution PowerShell sur Unrestricted

Set-ExecutionPolicy unrestricted

Vous voudrez peut-être voir ceci Question

10
Richard