You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

sitegen.ps1 2.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. $basedir = "C:\inetpub\"
  2. $baseweb = "IIS:\Sites\"
  3. $basepool = "IIS:\AppPools\"
  4. $sqlinstance = "."
  5. $Shares=[WMICLASS]”WIN32_Share”
  6. Import-Module WebAdministration
  7. [System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.SMO') | out-null
  8. $sqlserver = New-Object Microsoft.SqlServer.Management.Smo.Server($sqlinstance)
  9. function sitegen($name)
  10. {
  11. $sitedir = "$basedir$name"
  12. $siteweb = "$baseweb$name"
  13. $sitepool = "$basepool$name"
  14. if (siteexists($name))
  15. {
  16. return $false
  17. }
  18. # Create app pool
  19. New-Item $sitepool | out-null
  20. # Create website
  21. New-Item $siteweb -bindings @{protocol="http";bindingInformation=":80:$name"} -physicalPath $sitedir | out-null
  22. Set-ItemProperty $siteweb -name applicationPool -value $name | out-null
  23. # Create directory
  24. New-Item $sitedir -type directory | out-null
  25. # Create share
  26. $Shares.Create($sitedir, $name, 0) | out-null
  27. return $true
  28. }
  29. function siteexists($name)
  30. {
  31. $sitedir = "$basedir$name"
  32. $siteweb = "$baseweb$name"
  33. $sitepool = "$basepool$name"
  34. return (Test-path($sitedir)) -or (Test-path($sitedir)) -or (Test-path($sitepool))
  35. }
  36. function siterm($name)
  37. {
  38. $sitedir = "$basedir$name"
  39. $siteweb = "$baseweb$name"
  40. $sitepool = "$basepool$name"
  41. # Remove directory
  42. if (Test-Path $sitedir)
  43. {
  44. Remove-Item $sitedir -Recurse | out-null
  45. }
  46. # Remove website
  47. if (Test-Path $siteweb)
  48. {
  49. Remove-Item $siteweb -Recurse | out-null
  50. }
  51. # Remove app pool
  52. if (Test-Path $sitepool)
  53. {
  54. Remove-Item $sitepool -Recurse | out-null
  55. }
  56. # Remove share
  57. $share = Get-WmiObject -Class Win32_Share -ComputerName . -Filter "Name='$name'"
  58. if ($share)
  59. {
  60. $share.delete() | out-null
  61. }
  62. }
  63. function dbgen($name)
  64. {
  65. if (dbexists($name))
  66. {
  67. return $false
  68. }
  69. $db = New-Object Microsoft.SqlServer.Management.Smo.Database($sqlserver, $name)
  70. $db.Create() | out-null
  71. return $true
  72. }
  73. function dbexists($name)
  74. {
  75. $db = $sqlserver.Databases[$name]
  76. if ($db)
  77. {
  78. return $true
  79. }
  80. else
  81. {
  82. return $false
  83. }
  84. }
  85. function dbrm($name)
  86. {
  87. if (dbexists($name))
  88. {
  89. $sqlserver.KillDatabase($name) | out-null
  90. }
  91. }
  92. function apigen($name)
  93. {
  94. return (sitegen("api.$name")) -and (dbgen($name))
  95. }
  96. function apiexists($name)
  97. {
  98. return (siteexists("api.$name")) -or (dbexists($name))
  99. }
  100. function apirm($name)
  101. {
  102. siterm("api.$name")
  103. dbrm($name)
  104. }
  105. function frontgen($name)
  106. {
  107. return (sitegen($name))
  108. }
  109. function frontexists($name)
  110. {
  111. return (siteexists($name))
  112. }
  113. function frontrm($name)
  114. {
  115. siterm($name)
  116. }
  117. function appgen($name)
  118. {
  119. return (frontgen($name)) -and (apigen($name))
  120. }
  121. function appexists($name)
  122. {
  123. return (frontexists($name)) -or (apiexists($name))
  124. }
  125. function apprm($name)
  126. {
  127. frontrm($name)
  128. apirm($name)
  129. }