Q:

Powershell - ConvertTo-WebApplication on IIS

I'm trying to use powershell to deploy a .NET 4 application to a virtual directory.  I use the following code; 
Import-Module webadministration
New-Item IIS:\AppPools\MainAppPool
Set-ItemProperty IIS:\AppPools\MainAppPool managedRuntimeVersion v4.0

New-Item IIS:\AppPools\Site1AppPool
Set-ItemProperty IIS:\AppPools\Site1AppPool managedRuntimeVersion v4.0

New-Item IIS:\Sites\DemoSite -physicalPath C:\DemoSite -bindings @{protocol="http";bindingInformation=":82:"}
Set-ItemProperty IIS:\Sites\DemoSite -name applicationPool -value DemoAppPool

New-Item IIS:\Sites\DemoSite\Site1 -physicalPath C:\Deployment\application -type VirtualDirectory
ConvertTo-WebApplication IIS:\Sites\DemoSite\Site1
Set-ItemProperty IIS:\sites\DemoSite\Site1 -name applicationPool -value Site1AppPool

When I run this, it appears to work correctly, but on running the site, I get the following error;
Configuration Error

**Description**: An error occurred during the processing of a configuration file required to service this request.  Please review the specific error details below and modify your configuration file appropriately.  

**Parser Error Message**: It is an error to use a section registered as allowDefinition='MachineToApplication' beyond application level.   This error can be caused by a virtual directory not being configured as an application in IIS. 

Source Error: 

Line 13:       ASP.NET to identify an incoming user.  
Line 14:     -->
Line 15:     <authentication mode="Windows" />
Line 16:     <!-- 
Line 17:        The <customErrors> section enables configuration 

If I then remove the application in IIS and manually re-create it, the site works fine.  Can you tell me what I am missing? 

A:

When you run the commandlet Convert-ToWebApplication the previous virtual directory entry remains in the applicationhost.config.  I ran into the same error. 
Change your command to create the application directly rather than create a virtual directory then convert it. 
New-Item IIS:\Sites\DemoSite\Site1 -physicalPath C:\Deployment\application -type Application

