26

I'm coming onto a project that uses PowerShell to script the build. The build makes use of the WebAdministration module to manage the local IIS instance. When I run the build script the following error is thrown when trying to import WebAdministration.

Error: 06/29/2016 17:28:35: At C:\dev\src\nib-ravendb\build\ConfigureIis.ps1:10 char:1 + Import-Module WebAdministration + ~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~ [<<==>>] Exception: The specified module 'WebAdministration' was not loaded because no valid module file was fo und in any module directory. ERROR: 1

How ever when I run Import-Module WebAdministration at the PowerShell command line the module is imported and I can use features from it. Subsequently running the build script still fails.

I have IIS 7.5 and PowerShell 4

Does anyone have an idea why this import would be failing in the script but not at the command line, and how to fix it?

Richard
  • 6,812
  • 5
  • 45
  • 60
Klee
  • 2,022
  • 3
  • 23
  • 32

4 Answers4

26

For servers you need to install the role Management Tools under Web Server (IIS) to use the WebAdministration module. To see if you have the module available use Get-Module -ListAvailable.

For Windows 7 to 10 you will need to install the feature IIS Management Scripts and tools under Internet Information Services >> Web Management Tools.

You could try manually locating the WebAdministration .psd1 file and then import it. Use $env:psmodulepath to help locate where your modules are stored then run:

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

If Server 2008 you could try the following but this may not work on 2012 and upwards:

Add-PSSnapin WebAdministration

Note You will need to run the script with administrator rights to be able to load the WebAdministration module with Import-Module or Add-PSSnapin.

Also check that you have PowerShell's execution Policy set to Unrestricted:

Set-ExecutionPolicy unrestricted

You might want to see this Question.

Community
  • 1
  • 1
Richard
  • 6,812
  • 5
  • 45
  • 60
  • Thanks for your response @Richard. Unfortunately I have the Web Management Tools installed and WebAdministration come up when I list available modules. I can even use it from the shell. Just when I run the script it can't be imported. Any idea on that? – Klee Jun 29 '16 at 22:10
  • @Klee I have updated my question with some things you could try. – Richard Jun 30 '16 at 08:00
  • thanks. The first answer would have likely worked. The other two I had already tried. In the end there was a problem, possibly with chocolatey?, that was truncating $env:PSModulePath to the first entry, this is why the script was working if I typed it in but not in the script. I worked around it by reordering the entries in $env:PSModulePath Thanks heaps for you help. – Klee Jun 30 '16 at 22:50
7

I had the same situation, i've fixed it installing the Windows Feature Web-Scripting-Tools on W2016 Server:

Add-WindowsFeature Web-Scripting-Tools
Digweed
  • 71
  • 1
  • 2
4

In the end there was a problem something, possibly chocolatey?, was truncating $env:PSModulePath to the first entry, this is why the script was working if I typed it in but not in the script.

I found it by logging $env:PSModulePath at different points in the scripts that I was running.

I worked around it by reordering the entries in $env:PSModulePath.

Have a look at @Richard's answer for some other good suggestions.

Richard
  • 6,812
  • 5
  • 45
  • 60
Klee
  • 2,022
  • 3
  • 23
  • 32
2

In my case (Windows 10) I was using Powershell 7 and this simply refused to install the WebAdministration module, despite it being present in Windows Features.

Using a previous version of PS: e.g. Developer PowerShell for VS worked.

Christh
  • 517
  • 4
  • 9