Search code examples
powershellbatch-fileiispowershell-isepowershell-cmdlet

Cmdlets not found in command line but available in ISE


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:

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?


Solution

  • 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:

    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.