Close

PowerShell – IIS automation

You can view the IIS gui conole by running “Inetmgr” on the commandline.

Announcement

You can find all my latest posts on medium.

 

 

To automate IIS you first need to ensure you have the “webadministration”:

 

[powershell]
PS C:\Windows\system32> Get-Module -ListAvailable

Directory: C:\Windows\system32\WindowsPowerShell\v1.0\Modules

ModuleType Version Name ExportedCommands
———- ——- —- —————-
Manifest 1.0.0.0 ADRMS {Update-ADRMS, Uninstall-ADRMS, Install-ADRMS}
Manifest 1.0.0.0 AppLocker {Set-AppLockerPolicy, Get-AppLockerPolicy, Test-AppLockerP…
Manifest 1.0 BestPractices {Get-BpaModel, Invoke-BpaModel, Get-BpaResult, Set-BpaResult}
Manifest 1.0.0.0 BitsTransfer {Add-BitsFile, Remove-BitsTransfer, Complete-BitsTransfer,…
Manifest 1.0.0.0 CimCmdlets {Get-CimAssociatedInstance, Get-CimClass, Get-CimInstance,…
Script 1.0.0.0 ISE {New-IseSnippet, Import-IseSnippet, Get-IseSnippet}
Manifest 3.0.0.0 Microsoft.PowerShell.Diagnostics {Get-WinEvent, Get-Counter, Import-Counter, Export-Counter…
Manifest 3.0.0.0 Microsoft.PowerShell.Host {Start-Transcript, Stop-Transcript}
Manifest 3.1.0.0 Microsoft.PowerShell.Management {Add-Content, Clear-Content, Clear-ItemProperty, Join-Path…
Manifest 3.0.0.0 Microsoft.PowerShell.Security {Get-Acl, Set-Acl, Get-PfxCertificate, Get-Credential…}
Manifest 3.1.0.0 Microsoft.PowerShell.Utility {Format-List, Format-Custom, Format-Table, Format-Wide…}
Manifest 3.0.0.0 Microsoft.WSMan.Management {Disable-WSManCredSSP, Enable-WSManCredSSP, Get-WSManCredS…
Binary 1.0 PSDesiredStateConfiguration {Set-DscLocalConfigurationManager, Start-DscConfiguration,…
Script 1.0.0.0 PSDiagnostics {Disable-PSTrace, Disable-PSWSManCombinedTrace, Disable-WS…
Binary 1.1.0.0 PSScheduledJob {New-JobTrigger, Add-JobTrigger, Remove-JobTrigger, Get-Jo…
Manifest 2.0.0.0 PSWorkflow {New-PSWorkflowExecutionOption, New-PSWorkflowSession, nwsn}
Manifest 1.0.0.0 PSWorkflowUtility Invoke-AsWorkflow
Manifest 1.0.0.0 ServerManager {Get-WindowsFeature, Add-WindowsFeature, Remove-WindowsFea…
Manifest 1.0.0.0 TroubleshootingPack {Get-TroubleshootingPack, Invoke-TroubleshootingPack}
Manifest 1.0.0.0 WebAdministration {Start-WebCommitDelay, Stop-WebCommitDelay, Get-WebConfigu…

Directory: C:\Program Files\System Center Operations Manager\Agent\PowerShell

ModuleType Version Name ExportedCommands
———- ——- —- —————-
Binary 0.0.0.0 Microsoft.MonitoringAgent.PowerS… {Checkpoint-WebApplicationMonitoring, Get-WebApplicationMo…

PS C:\Windows\system32>
[/powershell]

 

If you have windows 2008 with IIS 7.5 installed, then you should see a module called “WebAdministration”. Next do:

 

[powershell]
Import-Module -Name WebAdministration
[/powershell]

After that you should have a bunch of IIS related commands ready for use:

[powershell]
PS C:\Windows\system32> Get-Command -Module webadministration

CommandType Name ModuleName
———– —- ———-
Alias Begin-WebCommitDelay webadministration
Alias End-WebCommitDelay webadministration
Function IIS: webadministration
Cmdlet Add-WebConfiguration webadministration
Cmdlet Add-WebConfigurationLock webadministration
Cmdlet Add-WebConfigurationProperty webadministration
Cmdlet Backup-WebConfiguration webadministration
Cmdlet Clear-WebConfiguration webadministration
Cmdlet Clear-WebRequestTracingSettings webadministration
Cmdlet ConvertTo-WebApplication webadministration
Cmdlet Disable-WebGlobalModule webadministration
.
.
.
.
[/powershell]

Along with this you should have the IIS drive available too:

[powershell] PS C:\Windows\system32> psdrive Name Used (GB) Free (GB) Provider Root CurrentLocation —- ——— ——— ——– —- ————— A FileSystem A:\ Alias Alias C 30.80 19.10 FileSystem C:\ Windows\system32 Cert Certificate \ D FileSystem D:\ Env Environment Function Function HKCU Registry HKEY_CURRENT_USER HKLM Registry HKEY_LOCAL_MACHINE IIS WebAdminis… \\OSVM1043 Variable Variable WSMan WSMan [/powershell]

 Create a Virtual Directory

You need to use the New-WebVirtualDirectory command:

 

http://www.jasonholden.com/blog/index.cfm/2014/1/7/Use-PowerShell-to-add-IIS-virtual-directory-with-Login-Connect-As

 

Here is an example command:

New-WebVirtualDirectory -Name “xxx”   -site “Default Web Site” -PhysicalPath ‘C:\Program Files\path\to\folder’

 

Name – This is the name as you want it to when viewing it in the Inetmgr’s tree structure.

Sites – on the inetmgr gui, it is the parent too the name, within the tree.

physicalpath – it is the full path to the folder where the folder should reside. For consistency it might be a good idea to mirror the folder’s name with the “name”

 

 

 

Resources

http://stackoverflow.com/questions/5963647/webadministration-powershell-module-not-found-on-windows-server-data-center

 

http://www.iis.net/learn/manage/powershell/powershell-snap-in-creating-web-sites-web-applications-virtual-directories-and-application-pools

 

http://stackoverflow.com/questions/14236406/how-to-enable-a-windows-feature-via-powershell

 

 

After this, you should see IIS when you do:

get-psprovider

Also you should see the following new commands:

Get-Command -Module webadministration