Как обновить существующее использование веб-сайта IIS 6 PowerShell

Я пытаюсь создать сценарий PowerShell, который создает новый веб-сайт IIS 6 и устанавливает вещи как Пул приложений, Подстановочные карты приложения, версия ASP.NET, и т.д.

После обширного поиска в Интернете я нашел сценарий, который позволяет мне создавать новый веб-сайт, но не изменить все свойства мне нужно.

$newWebsiteName = "WebSiteName"  
$newWebsiteIpAddress = "192.168.1.100"  
$newWebSiteDirPath = "c:\inetpub\wwwroot\WebSiteName"  
$iisWebService  = Get-WmiObject -namespace "root\MicrosoftIISv2" 
                                -class "IIsWebService"  
$bindingClass = [wmiclass]'root\MicrosoftIISv2:ServerBinding'  
$bindings = $bindingClass.CreateInstance()  
$bindings.IP = $newWebsiteIpAddress  
$bindings.Port = "80"  
$bindings.Hostname = ""  
$result = $iisWebService.CreateNewSite
               ($newWebsiteName, $bindings, $newWebSiteDirPath)  

Любая справка о том, как развернуть пример выше, значительно ценится.

6
задан SteveC 14 December 2011 в 16:43
поделиться

2 ответа

Объект $ result содержит путь к вновь созданному объекту IIsWebServer. Вы можете получить доступ к виртуальному каталогу, где вы можете настроить дополнительные свойства, выполнив следующие действия:

$w3svcID = $result.ReturnValue -replace "IIsWebServer=", ""
$w3svcID = $w3svcID -replace "'", ""
$vdirName = $w3svcID + "/ROOT";

$vdir = gwmi -namespace "root\MicrosoftIISv2" 
             -class "IISWebVirtualDir" 
             -filter "Name = '$vdirName'";
# do stuff with $vdir
$vdir.Put();
1
ответ дан 9 December 2019 в 22:33
поделиться

Прежде всего, большое спасибо jrista за то, что направил меня в нужном направлении.

Я также нашел эту статью очень полезной.

Далее следует сценарий powershell для создания пула приложений, веб-сайта и сертификата SelfSsl:


function CreateAppPool ([string]$name, [string]$user, [string]$password)
{
    # check if pool exists and delete it - for testing purposes
    $tempPool  = gwmi -namespace "root\MicrosoftIISv2" -class "IISApplicationPoolSetting" -filter "Name like '%$name%'"
    if (!($tempPool -eq $NULL)) {$tempPool.delete()}

    # create Application Pool
    $appPoolSettings = [wmiclass] "root\MicrosoftIISv2:IISApplicationPoolSetting"
    $newPool = $appPoolSettings.CreateInstance()

    $newPool.Name = "W3SVC/AppPools/" + $name
    $newPool.WAMUsername = $user
    $newPool.WAMUserPass = $password

    $newPool.PeriodicRestartTime = 1740
    $newPool.IdleTimeout = 20
    $newPool.MaxProcesses = 1
    $newPool.AppPoolIdentityType = 3

    $newPool.Put()
}

function CreateWebSite ([string]$name, [string]$ipAddress, [string]$localPath, [string] $appPoolName, [string] $applicationName)
{
    # check if web site exists and delete it - for testing purposes
    $tempWebsite  = gwmi -namespace "root\MicrosoftIISv2" -class "IISWebServerSetting" -filter "ServerComment like '%$name%'"
    if (!($tempWebsite -eq $NULL)) {$tempWebsite.delete()}

    # Switch the Website to .NET 2.0
    C:\windows\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -sn W3SVC/

    $iisWebService  = gwmi -namespace "root\MicrosoftIISv2" -class "IIsWebService"

    $bindingClass = [wmiclass]'root\MicrosoftIISv2:ServerBinding'
    $bindings = $bindingClass.CreateInstance()
    $bindings.IP = $ipAddress
    $bindings.Port = "80"
    $bindings.Hostname = ""

    $iisWebService.CreateNewSite($name, $bindings, $localPath)

    # Assign App Pool
    $webServerSettings  = gwmi -namespace "root\MicrosoftIISv2" -class "IISWebServerSetting" -filter "ServerComment like '%$name%'"
    $webServerSettings.AppPoolId = $appPoolName
    $webServerSettings.put()

    # Add wildcard map
    $wildcardMap = "*, c:\somewildcardfile.dll, 0, All"
    $iis = [ADSI]"IIS://localhost/W3SVC"
    $webServer = $iis.psbase.children | where { $_.keyType -eq "IIsWebServer" -AND $_.ServerComment -eq $name }
    $webVirtualDir = $webServer.children | where { $_.keyType -eq "IIsWebVirtualDir" }
    $webVirtualDir.ScriptMaps.Add($wildcardMap)

    # Set Application name
    $webVirtualDir.AppFriendlyName = $applicationName

    # Save changes
    $webVirtualDir.CommitChanges()

    # Start the newly create web site
    if (!($webServer -eq $NULL)) {$webServer.start()}
}

function AddSslCertificate ([string] $websiteName, [string] $certificateCommonName)
{
    # This method requires for you to have selfssl on your machine
    $selfSslPath = "\program files\iis resources\selfssl"

    $certificateCommonName = "/N:cn=" + $certificateCommonName

    $certificateValidityDays = "/V:3650"
    $websitePort = "/P:443"
    $addToTrusted = "/T"
    $quietMode = "/Q"


    $webServerSetting = gwmi -namespace "root\MicrosoftIISv2" -class "IISWebServerSetting" -filter "ServerComment like '$websiteName'"
    $websiteId ="/S:" + $webServerSetting.name.substring($webServerSetting.name.lastindexof('/')+1)

    cd -path $selfSslPath
    .\selfssl.exe $addToTrusted $certificateCommonName $certificateValidityDays $websitePort $websiteId $quietMode
}

$myNewWebsiteName = "TestWebsite"
$myNewWebsiteIp = "192.168.0.1"
$myNewWebsiteLocalPath = "c:\inetpub\wwwroot\"+$myNewWebsiteName
$appPoolName = $myNewWebsiteName + "AppPool"
$myNewWebsiteApplicationName = "/"
$myNewWebsiteCertificateCommonName = "mynewwebsite.dev"

CreateAppPool $appPoolName "Administrator" "password"
CreateWebSite $myNewWebsiteName $myNewWebsiteIp $myNewWebsiteLocalPath $appPoolName $myNewWebsiteApplicationName
AddSslCertificate $myNewWebsiteName $myNewWebsiteCertificateCommonName
9
ответ дан 9 December 2019 в 22:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: