install-iis.ps1 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. Install-WindowsFeature -name Web-Server -IncludeManagementTools
  2. Install-WindowsFeature Web-Mgmt-Console
  3. Install-WindowsFeature Web-Mgmt-Service
  4. Install-WindowsFeature Web-Http-Redirect
  5. Function Install-IIS([string]$path) {
  6. #Run IIS manager and create FusionPBX app
  7. #Write-Host "Create web site in IIS" -ForegroundColor Yellow
  8. #Write-Host "Enable extensions php_pgsql and php_pdo_pgsql" in IIS -ForegroundColor Yellow
  9. #Write-Host "Use URL Rewrite to import rules from .htaccess file" -ForegroundColor Yellow
  10. #Start-Process "${env:SystemRoot}\system32\inetsrv\InetMgr.exe"
  11. Install-IIS -path $system_directory -port 80
  12. iisreset
  13. #Remove current configuration
  14. #Remove-Item c:\inetpub\FusionPBX\resources\config.php
  15. [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.Web.Administration")
  16. $iis = new-object Microsoft.Web.Administration.ServerManager
  17. #Create or set application pool
  18. if (-not ($iis.ApplicationPools.Item("PHP"))) {
  19. $pool = $iis.ApplicationPools.Add("PHP")
  20. }
  21. $pool = $iis.ApplicationPools.Item("PHP")
  22. $pool.ProcessModel.IdentityType = "NetworkService"
  23. $pool.ProcessModel.IdleTimeout = "00:30:00"
  24. #Grant permissions to path
  25. if ($iis_identity -ne "LocalSystem") {
  26. Icacls $path /grant "${iis_identity}:(OI)(CI)M"
  27. }
  28. $site= $iis.Sites | Where-Object Bindings -Like "*:80:*"
  29. #Get site
  30. if ($site) {
  31. $site.Name = "FusionPBX"
  32. }
  33. elseif ($iis.sites.Item("FusionPBX")) {
  34. $site = $iis.Sites.Item("FusionPBX")
  35. }
  36. else {
  37. $site = $iis.Sites.Add("FusionPBX",$path,80)
  38. }
  39. #$site.Bindings | Format-Table protocol,EndPoint,Host,SslFlags -AutoSize
  40. #$cert = (Get-ChildItem –Path cert:\LocalMachine\My | Sort-Object NotAfter | Select-Object -Last 1).Thumbprint
  41. #netsh http delete sslcert ipport=0.0.0.0:443
  42. #netsh http add sslcert ipport=0.0.0.0:443 certhash=$cert "appid={4dc3e181-e14b-4a21-b022-59fc669b0914}"
  43. #netsh http show sslcert
  44. #Set anonymous authentication to application pool identity
  45. $config = $iis.GetApplicationHostConfiguration()
  46. $auth = $config.GetSection("system.webServer/security/authentication/anonymousAuthentication", "FusionPBX/")
  47. $auth.SetAttributeValue("userName","")
  48. #Set application pool
  49. $app = $site.Applications | Where-Object -Property Path -eq '/'
  50. $app.ApplicationPoolName = $pool.Name
  51. #Set physical path
  52. $vd = $app.VirtualDirectories | Where-Object -Property Path -eq '/'
  53. $vd.PhysicalPath = $path
  54. #Save
  55. $iis.CommitChanges()
  56. }