Tengo un archivo csv que contiene 10 configuraciones de sitios web diferentes.
Creé el siguiente script para automatizar su creación. Cuando pruebo el script, se ejecuta correctamente, pero me pregunto si este es el mejor diseño para automatizar la creación de sitios web. ¿Es correcto mi uso del bucle y de las declaraciones if/else?
Espero que alguien pueda revisarlo y decirme si este script se ve bien.
También me gustaría saber si hay alguna manera de establecer diferentes permisos en diferentes directorios virtuales. Por ejemplo, si tuviera una carpeta que se usa para cargas y descargas, ¿hay alguna manera, a través de un script de PowerShell, de establecer permisos de lectura/escritura para ese directorio virtual?
¡Gracias!
#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
}
}