######################################################### # # Script to install IIS. # # Created Sept 20, 2010 # Bryan Loveless # # # Requires Powershell 2.0 # # Change your Execution policy to RemoteSigned if running locally # by: Set-executionpolicy -executionpolicy RemoteSigned # #Prereqs: # ######################################################## $whorunsthis = Read-host "Is this a (S)erver or your (L)ocal_Developer box? (S/L)" if ($whorunsthis -eq "S" ) { #get-windowsfeature will get list of Windows Component Intalled on SERVER Import-Module servermanager add-windowsfeature Application-Server add-windowsfeature AS-NET-Framework add-windowsfeature AS-Web-Support add-windowsfeature AS-WAS-Support add-windowsfeature AS-HTTP-Activation add-windowsfeature File-Services add-windowsfeature FS-FileServer add-windowsfeature Web-Server add-windowsfeature Web-WebServer add-windowsfeature Web-Common-Http add-windowsfeature Web-Static-Content add-windowsfeature Web-Default-Doc add-windowsfeature Web-Dir-Browsing add-windowsfeature Web-Http-Errors add-windowsfeature Web-Http-Redirect add-windowsfeature Web-App-Dev add-windowsfeature Web-Asp-Net add-windowsfeature Web-Net-Ext add-windowsfeature Web-ISAPI-Ext add-windowsfeature Web-ISAPI-Filter add-windowsfeature Web-Health add-windowsfeature Web-Http-Logging add-windowsfeature Web-Log-Libraries add-windowsfeature Web-Request-Monitor add-windowsfeature Web-Http-Tracing add-windowsfeature Web-Security add-windowsfeature Web-Basic-Auth add-windowsfeature Web-Windows-Auth add-windowsfeature Web-Digest-Auth add-windowsfeature Web-Client-Auth add-windowsfeature Web-Cert-Auth add-windowsfeature Web-Url-Auth add-windowsfeature Web-Filtering add-windowsfeature Web-IP-Security add-windowsfeature Web-Performance add-windowsfeature Web-Stat-Compression add-windowsfeature Web-Dyn-Compression add-windowsfeature Web-Mgmt-Tools add-windowsfeature Web-Mgmt-Console add-windowsfeature Web-Scripting-Tools add-windowsfeature Web-Mgmt-Service add-windowsfeature NET-Framework add-windowsfeature NET-Framework-Core add-windowsfeature NET-Win-CFAC add-windowsfeature NET-HTTP-Activation add-windowsfeature Multipath-IO add-windowsfeature RSAT add-windowsfeature RSAT-Role-Tools add-windowsfeature RSAT-Web-Server add-windowsfeature SNMP-Services add-windowsfeature SNMP-Service add-windowsfeature SNMP-WMI-Provider add-windowsfeature Windows-Internal-DB add-windowsfeature PowerShell-ISE add-windowsfeature WAS add-windowsfeature WAS-Process-Model add-windowsfeature WAS-NET-Environment add-windowsfeature WAS-Config-APIs add-windowsfeature WSRM } elseif ($whorunsthis -eq "L") { #oclist will give a list of what is possible # or try http://technet.microsoft.com/en-us/library/cc722041%28WS.10%29.aspx #below is for Desktops (windows 7) # install IIS Role ocsetup IIS-WebServerRole ocsetup IIS-WebServer ocsetup IIS-CommonHttpFeatures ocsetup IIS-DefaultDocument ocsetup IIS-HttpErrors ocsetup IIS-HttpRedirect ocsetup IIS-StaticContent ocsetup IIS-HealthAndDiagnostics ocsetup IIS-CustomLogging ocsetup IIS-HttpLogging ocsetup IIS-LoggingLibraries #ocsetup MSMQ-HTTP possbily needed for Ektron ocsetup IIS-RequestMonitor ocsetup IIS-Performance ocsetup IIS-HttpCompressionDynamic ocsetup IIS-HttpCompressionStatic ocsetup IIS-Security ocsetup IIS-BasicAuthentication ocsetup IIS-ClientCertificateMappingAuthentication ocsetup IIS-IISCertificateMappingAuthentication ocsetup IIS-IPSecurity ocsetup IIS-RequestFiltering ocsetup IIS-WindowsAuthentication ocsetup IIS-WebServerManagementTools ocsetup IIS-IIS6ManagementCompatibility ocsetup IIS-ManagementConsole # install .net ocsetup NetFx2-ServerCore ocsetup NetFx2-ServerCore-WOW64 ocsetup NetFx3 #install ASP ocsetup IIS-ASP # install asp.net start /w ocsetup WAS-NetFxEnvironment ocsetup IIS-ISAPIExtensions ocsetup IIS-ISAPIFilter ocsetup IIS-NetFxExtensibility ocsetup IIS-ASPNET ocsetup IIS-ApplicationDevelopment ocsetup WCF-HTTP-Activation } else {write-host "you must select S or L" Exit}
If I spend some time figuring out something that might help others, and hasn't been found on the Internet by me, I will post about it. I hope to save some poor IT guy or gal some time.
Thursday, September 30, 2010
Install IIS and other IIS stuff on Server or a Desktop
I searched around, and didn't find anyone who had a way to install IIS from POSH. And if they got close, they didn't say that it didnt work on a server, or a desktop depending on the script. So here is one that will work on both, depending on what the user says they have:
Labels:
POSH powershell
Tuesday, September 28, 2010
App pool restart using POSH
We sometimes want to restart an app pool on a server that is either misbehaving, or coud be locked up. Here is a script to return all the app pools that are running on the server you specify, and enables you to restart just the app pool you want. This is my raw script, including some code I was expirementing with at the end of the script.
############################################################################################# # #Simple script to recycle an app pool of the User's choice on the server of the user's choice # # May 24, 2010 #Bryan Loveless # #This must have PowerShell v2 or newer, find it at http://support.microsoft.com/kb/968929 if # running win2k r1 or earlier. run Get-host if you are not sure what version you have. # AS OF THIS DATE, THIS SCRIP MUST NOT USE POWERGUI, USE ISE TO MODIFY OR RUN. # ############################################################################################# #import-module webAdministration #get servername to restart the pools on $servername = Read-Host "Enter the name of the server to restart the pools on." #connect to the server listed above $connection = New-PSSession -ComputerName $servername #incase there are mutiple machines listed, this should keep track of them all (future implementation) $psall = Get-PSSession Write-Host "Here are the avalible app pools on the server you selected." # run the command to see what app pools there are, but not enter the session yet. # invoke-command -ComputerName $servername {get-wmiobject -namespace "root\MicrosoftIISv2" -class "IIsApplicationPool"} #Enter-PSSession -ComputerName $severname #this way doesnt seem to work, see line below # $connection | Enter-PSSession Enter-PSSession -Session $connection # tried a wait event to establish the connection, didn't work # wait-event -timeout 5 #perhaps above return just the app pool name and status? $pools= (get-wmiobject -namespace "root\MicrosoftIISv2" -class "IIsApplicationPool") foreach($item in $pools) { Write-Host $item.name Write-Host $item.status } $apppoolname = Read-Host "What is the name of the app pool you want to restart?" #entering the session above so we can see the apps running #Enter-PSSession -ComputerName $severname #$appPoolName = $args[0] $appPool = (get-wmiobject -namespace "root\MicrosoftIISv2" -class "IIsApplicationPool" | Where-Object {$_.Name -eq "W3SVC/APPPOOLS/$appPoolName"}) # it doesnt like to "restart" pools that are stopped, so I will stop and start them instead of recycle # $appPool.Recycle() $appPool.Stop() $appPool.Start() #end the connection to the server above Exit-PSSession #Remove-PSSession -session $psall #to help close sessions while coding #$psall = Get-PSSession #Remove-PSSession $psall #Other interesting things that can be done with this variable once declared: # #EnumAppsInPool Method System.Management.ManagementBaseObject Enum... #Recycle Method System.Management.ManagementBaseObject Recy... #Start Method System.Management.ManagementBaseObject Start() #Stop Method System.Management.ManagementBaseObject Stop() #Caption Property System.String Caption {get;set;} #Description Property System.String Description {get;set;} #InstallDate Property System.String InstallDate {get;set;} #Name Property System.String Name {get;set;} #Status Property System.String Status {get;set;} # #Another interesting bit of code to borrow: #function recycle-pool($strServerName) #{ # $objWMI = [WmiSearcher] "Select * From IIsApplicationPool" # $objWMI.Scope.Path = "\\" + $strServerName + "\root\microsoftiisv2" # $objWMI.Scope.Options.Authentication = 6 # $pools = $objWMI.Get() # foreach ($pool in $pools) # { # $pool.recycle() # if (!$?) # { # Write-Host $pool.name " - ERROR" # } # else # { # Write-Host $pool.name " - Recycled" # } #}
Labels:
POSH powershell IIS app pool
Using POSH to shutdown machines quickly
We were having some electrical issues in our building, and I wanted to have a script that would shutdown all of our test, dev, and QA machines in a hurry to preserve the remaining UPS power for the production machines. Below is a simple script I wrote to shutdown a predefined list of machines quickly:
----------------------------
----------------------------
########################################################################### # # Shutdown Test and Dev servers # # Created Aug 27, 2010 # Bryan Loveless # # # # Requires Powershell 2.0 # # Change your Execution policy to RemoteSigned if running locally # by: Set-executionpolicy -executionpolicy RemoteSigned # #Prereqs: # #Caviots: # # # ########################################################################### $Victims="devserverWINSname1","testserverWINSname1","devserverWINSname2" $shutdownjob = stop-computer -computername $victims -throttlelimit 5 AsJob #throttle limit is how many commands to send at once, this can be many, many more than 5 if you wish Write-Host $shutdownjobRun this script and those machines named will be down before you know it.
Labels:
POSH powershell
Subscribe to:
Posts (Atom)