IIS altera aplicativos para diretórios virtuais no powershell

1

Tentando escrever um script aqui para alterar todos os aplicativos para diretórios virtuais. Estou usando o Powershell, mas minhas habilidades são um pouco fracas. Estou usando a ferramenta certa?

Aqui está o que eu tenho até agora:

cd $env:SystemRoot\system32\inetsrv\

#Find all applications below RootAppName, convert them to virtual directories

$RootAppName = 'Default Web Site/RootApp'

./appcmd list app  | Where { [Regex]::IsMatch($_, $RootAppName + '/') } | Foreach{
            $FirstIndex = $_.IndexOf('"', 0)
            $SecondIndex = $_.IndexOf('"', $FirstIndex + 1)
            $Appname = $_.Substring($FirstIndex + 1, $SecondIndex - $FirstIndex - 1)

            $PhysicalPath = '' #Can't figure out how to get this
            $VDirPath = $Appname.Replace($RootAppName, '')

            # Need to invoke here appcmd delete app $Appname
            # Need to invoke here appcmd add vdir /app.name:$RootAppName /path:$VDirPath /physicalPath:$PhysicalPath
        }

Alguma ideia? Estou indo sobre o caminho certo?

    
por Shlomo 27.10.2011 / 21:14

2 respostas

1

Urgh! PowerShell 2? Não gaste para AppCMD.exe .

No prompt do PowerShell, faça uma Import-Module WebAdministration ou apenas clique com o botão direito do mouse no ícone do PowerShell e selecione "Import System Modules"

Em seguida, experimente Get-WebApplication e Remove-WebApplication .

    
por 28.10.2011 / 03:05
1

Aqui está o script para a posteridade usando o WebAdministration:

Import-Module WebAdministration

#Find all applications below AppName in site SiteName, convert them to virtual directories

$RootAppName = 'AppName' 
$SiteName = 'SiteName'

$SitePath = 'IIS:\Sites\' + $SiteName 
cd $SitePath

dir | Where { [Regex]::IsMatch($_.Name, $RootAppName + '\') } | Foreach {
    $AppName = $_.Name
    $PhysicalPath = $_.PhysicalPath
    Remove-WebApplication -Name $AppName -Site $SiteName 
    Write-Host 'Removing application' $AppName 'from site' $SiteName
    New-WebVirtualDirectory -Site $SiteName -Name $AppName -PhysicalPath $PhysicalPath
    Write-Host 'Adding virtual directory' $AppName 'to site' $SiteName 'at path' $PhysicalPath
}
    
por 28.10.2011 / 19:33