Crie sites a partir de um arquivo csv e permissões de pasta

Crie sites a partir de um arquivo csv e permissões de pasta

Eu tenho um arquivo csv que contém 10 configurações de sites diferentes.

Criei o script abaixo para automatizar sua criação. Quando testo o script, ele é executado com êxito, mas estou me perguntando se esse é o melhor design para automatizar a criação de sites. O meu uso do loop e das instruções if/else está correto?

Espero que alguém possa revisar e me informar se esse script parece bom.

Também gostaria de saber se existe uma maneira de definir permissões diferentes em diretórios virtuais diferentes. Por exemplo, se eu tivesse uma pasta usada para uploads e downloads, existe uma maneira, por meio de um script do PowerShell, de definir permissões de leitura/gravação para esse diretório virtual?

Obrigado!

#populate array object with contents from webservers.csv file
$webObjects = Import-Csv c:\\iis\webservers.csv

ForEach ($obj in $webObjects) {

$name = $obj.WebSiteName
$path = $obj.Path
$vPath = $obj.VirtualDirectory
$appPool = $obj.AppPoolName
$appPoolId = $obj.appPoolIdentity
$dotNetVersion = $obj.DotNetVersion
$port = $obj.Port

#new website path
if ( ! (Test-Path $path)) {
    New-Item -type directory -path $path
} else {
    Write-Host "The path already exists." -BackgroundColor Blue -ForegroundColor White
}

    #new website virtual path
if ( ! (Test-Path $vPath)) {
    New-Item -type directory -path $vPath
} else {
    Write-Host "The path already exists." -BackgroundColor Blue -ForegroundColor White
}

#New application pool
if ( ! (Test-Path "iis:\appPools\$appPool")) {
    New-WebAppPool  $appPool
} else {
    Write-Host "This application pool already exists." -BackgroundColor Blue -ForegroundColor White
}

if (Test-Path "iis:\appPools\$appPool") {
    Set-ItemProperty IIS:\AppPools\$appPool managedRuntimeVersion $dotNetVersion
} else {
    Write-Host "This application pool does not exist." -BackgroundColor Blue -ForegroundColor White
}

#New website
if ( ! (Test-Path "iis:\Sites\$name")) { 
    New-WebSite -Name $name -PhysicalPath $path -ApplicationPool $appPool -Port $port
} else {
    Write-Host "A website with the name $name at $path already exists."  -BackgroundColor Blue -ForegroundColor White
}


#New virtual directory
if ( ! (Test-Path $vPath)) { 
    New-WebVirtualDirectory -Site $name -Name $name -PhysicalPath -$vPath
} else {
    Write-Host "A virtual directory with the name $name at $vPath already exists." -BackgroundColor Blue -ForegroundColor White
}

}

informação relacionada