Question:
I’m trying to create an IIS application and app pool using PowerShell on a Windows Server 2008 R2 VM. The powershell script is as follows:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
Param( [string] $branchName, [string] $sourceFolder ) if (-NOT ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole(` [Security.Principal.WindowsBuiltInRole] "Administrator")) { Write-Warning "You do not have Administrator rights to run this script. `nPlease re-run this script as an Administrator." Exit } $appPool = $branchName $site = "Default Web Site" #Add APPPool New-WebAppPool -Name $appPool -Force #Create Applications New-WebApplication -Name $branchName -Site $site -PhysicalPath $sourceFolder - ApplicationPool $appPool -Force |
If I run the script in the PowerShell ISE it works fine but if I run it from a command line (or a batch file using the command line) I get the error
The term New-WebAppPool is not recognized as the name of a cmdlet… etc.
Is there a way that the web administration cmdlets could be installed in the ISE but not the command line?
Answer:
Assuming that you’re using PowerShell v2 (the default version installed with Server 2008 R2) it’s as @jisaak suspected: you need to import the module WebAdministration
explicitly in your code:
1 2 |
Import-Module WebAdministration |
ISE seems to do that automatically.
Another option would be to upgrade to PowerShell v4, which also automatically imports modules when one of their exported cmdlets is used.