Reputation: 2032
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
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
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
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
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