Deploying IIS websites to a web farm using PowerShell
Deploying IIS websites to a web farm using PowerShell
In a recent article I described the process of implementing a simple Microsoft Network Load Balance using PowerShell for a small web farm. After testing the load balance I need to deploy the new websites. I thought I would share the deployment of one of those with you.
This content applies to Server 2008R2 and Server 2012
The setup
My environment is very simple, I have a management box running the new Windows 8 with the RSAT administration tools. You won’t need the RSAT tools for this process, just PowerShell. You will need to have PowerShell Remoting enabled on the web servers. I also have the website files in a folder structure on my computer. After the website has been created I will deploy those files to all the servers.
Deploying a website to multiple servers
The first step is to open a PowerShell remoting session to the servers. I could have grabbed the server names from Active Directory using the Get-AdComputer cmdlet, but there are only four of them so I’m going to just type the server names and store them to a variable. I’m going to use the variable reference later to simplify the deployment process.
PS> $Servers= ‘web1’, web2’, ‘web3’, ‘web4’ PS>
$session=New-PsSession –ComputerName $servers
Once you have the remote connection to the servers you will need to create a website. I’m going to use the cmdlets from the WebAdministration module on the servers. If you’re working on Server 2008R2 you will need to import this module first, but on Server 2012 the module will dynamically load.
I like to use my own custom application pools with a unique name rather than the default that is created. The first step in this case is to create the new application pool that will hold the website. Also, in my case the web application that I’m deploying needs a different application pool identity. I’m going to change the identity to the Network Service using the Set-ItemProperty cmdlet. The default identity of ApplicationPoolIdentity is the most secured, so only change the identity if you must.
PS> Invoke-Command -Session $Session {New-WebAppPool -Name ProductSite-pool}
PS> Invoke-Command -Session $s {Set-ItemProperty -Path IIS:\AppPools\ProductSite-Pool -Name ProcessModel.IdentityType -value 2}
At this stage I need to create the file structure for the website and deploy the website files.
PS> Invoke-Command -Session $s {New-Item -path c:\sites\ProductSite -ItemType directory -force}
PS> $servers | foreach-Object{copy-item -Path c:\sitefiles\ProductSite\*.* -Destination "\\$_\c$\sites\ProductSite"}
To create the website use the New-WebSite cmdlet and specify the name of the site, the location of the files, the application pool and a unique binding. For my website I’m uniquely identifying it using a host header.
PS> Invoke-Command -Session $Session {New-Website -Name Jason -HostHeader ProductSite.company.com -PhysicalPath C:\sites\jason -ApplicationPool Jason-pool}
After entering an A record for the host header into DNS, test the new site! If you have multiple websites that you want to deploy, or want a rapid disaster recovery option, script the commands into a .PS1
Knowledge is PowerShell,
Jason is Director of PowerShell Technologies and an Instructor at Interface Technical Training in Phoenix, AZ.
Upcoming PowerShell classes taught by Jason:
- PPS300: PowerShell v2 and v3 Training for Administrators
- PS350AD: PowerShell v2 and v3 Training for Active Directory
- PPS350WMO: PowerShell v2 and v3 Training for Windows Management Instrumentation (WMI)
- PS400: PowerShell v2 and v3 Scripting and Tool Making Training
Attend in person or Online with RemoteLive. Also available in Video Training.
You May Also Like
A Simple Introduction to Cisco CML2
0 3774 0Mark Jacob, Cisco Instructor, presents an introduction to Cisco Modeling Labs 2.0 or CML2.0, an upgrade to Cisco’s VIRL Personal Edition. Mark demonstrates Terminal Emulator access to console, as well as console access from within the CML2.0 product. Hello, I’m Mark Jacob, a Cisco Instructor and Network Instructor at Interface Technical Training. I’ve been using … Continue reading A Simple Introduction to Cisco CML2
Cable Testers and How to Use them in Network Environments
0 692 1This content is from our CompTIA Network + Video Certification Training Course. Start training today! In this video, CompTIA Network + instructor Rick Trader demonstrates how to use cable testers in network environments. Let’s look at some tools that we can use to test our different cables in our environment. Cable Testers Properly Wired Connectivity … Continue reading Cable Testers and How to Use them in Network Environments
Configuring Windows Mobility Center and How to Turn it On and Off
1 1433 1Video transcription Steve Fullmer: In our Windows training courses, we often share information about the Windows 8.1 Mobility Center. Mobility Center was introduced for mobile and laptop devices in Windows 7. It’s present and somewhat enhanced in Windows 8. Since we don’t have mobile devices in our classrooms, I decided to take a little bit … Continue reading Configuring Windows Mobility Center and How to Turn it On and Off
Pingback: How to deploy PowerShell Web Access PSWA using PowerShell | Interface Technical Training
Pingback: How to deploy PowerShell Web Access PSWA using PowerShell | Interface Technical Training