Klee
Klee

Reputation: 2032

Import-Module WebAdministration wont load from script but does from command line

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?

Upvotes: 26

Views: 52193

Answers (4)

Christh
Christh

Reputation: 557

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.

Upvotes: 2

Digweed
Digweed

Reputation: 91

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

Add-WindowsFeature Web-Scripting-Tools

Upvotes: 9

Klee
Klee

Reputation: 2032

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.

Upvotes: 4

Richard
Richard

Reputation: 7000

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.

Upvotes: 27

Related Questions