Exchange your Mind

"La connaissance ne vaut que si elle est partagée" / "An effective Knowledge is a shared one"

Redirection IIS par Script de la racine vers le Vdir « OWA »

Posted by David PEKMEZ le décembre 21, 2011


Bonjour,

J’avais déjà fait un article à ce sujet il y a un an déjà ! http://unifiedit.wordpress.com/2010/12/04/iis-redirection-vers-owa-exchange-server-2010-2/

Le but est de rediriger les requêtes de la racine du Serveur IIS

Et voici le script Powershell qui va vous aider à configurer correctement vos serveurs Exchange

Le principe est très simple, vous avez deux paramètres à renseigner :

  • Le premier est l’URL de redirection que vous désirez utiliser exemple : https://unifiedit.wordpress.com/owa
  • Le second paramètre est l’utilisation ou non du SSL pour l’accès au téléchargement de l’OAB dans votre infrastructure, ici vous pouvez utiliser au choix :
    • http
    • https

Pour de plus amples informations sur l’utilisation du script vous pouvez utiliser le paramètre – ?

Exemple d’utilisation du script :


.\IISRedirect.ps1 -URLRedirect "https://exchsp2DCFR.intra.net/owa" -OAB HTTP

Code source

#=================================================================================
#	IISRedirect.ps1
#
#	THIS CODE AND INFORMATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
#	KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
#	IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
#	PARTICULAR PURPOSE.
#	
#	Description:  Redirect IIS to a Vdir Directory
#
#	# Script Written By: David Pekmez ( http://unifiedit.wordpress.com )
#
#	Version: 1
#	Last Updated: 08/12/2011
#
#=================================================================================


#=================================================================================
# Parameter definition
#=================================================================================

Param(
	[Parameter(Mandatory=$true, Position=0, HelpMessage="Please Enter the redirection URL",ValueFromPipeline=$true)][string] $URLRedirect,
	[Parameter(Mandatory=$true, Position=1, HelpMessage="Please Enter HTTP or HTTPS for OAB Access",ValueFromPipeline=$true)][string] $OAB
)

#=================================================================================
# OAB Access HTTP or HTTPS
#=================================================================================

if ($OAB -eq "HTTP")    {
    [string]$OABConf = ""
}    else    {
    [string]$OABConf = "Ssl"
}

#=================================================================================
# Add Exchange 2010 Powershell Snapin
#=================================================================================

if ( (Get-PSSnapin -Name Microsoft.Exchange.Management.PowerShell.E2010 -ErrorAction SilentlyContinue) -eq $null )
{
    Add-PsSnapin Microsoft.Exchange.Management.PowerShell.E2010
}

#==========================================================================
# Function that returns true if the incoming argument is a help request
#==========================================================================

function IsHelpRequest
{
param($argument)
return ($argument -eq "-?");
}

#==========================================================================
# Function Debug
#==========================================================================
function Debug([string]$data)
{
$var = $null
$var = get-variable($data) -ea SilentlyContinue

	if ($var)
	{
	write-host "DEBUG: " -foregroundcolor cyan -nonewline
	write-host $var.name "  " -nonewline
	write-host "[$var.value]"
	}
	else
	{
	write-host "DEBUG: " -foregroundcolor cyan -nonewline
	write-host "[$data]"
	}
	
}


#=======================================
# Reset IIS on the server
#=======================================
function ResetIIS
{

Write-Host "Restarting IIS Services..." -foregroundcolor Green

IISRESET

Write-Host ""
Write-Host "Redirection set to $URLRedirect and $OAB for OAB Access" -foregroundcolor green
Write-Host ""
}

#===================================================================
# Function that displays the help related to this script following
# the same format provided by get-help or <cmdletcall> -?
#===================================================================
function Usage
{

@"
NAME: IISRedirect.ps1

SYNOPSIS:
Add a redirection on IIS default web site to another Virtual directory 
Made for Exchange Server to redirect to OWA directory

SYNTAX:
IISRedirect.ps1

`t[-URLRedirect <Redirection URL>]
`t[-OAB <HTTP or HTTPS>]
`t[-?]

PARAMETERS:
-URLRedirect (Requiered)
Enter the IIS redirection URL to use

-OAB (Requiered)
Set OAB access to HTTP Or HTTPS

-?
Help on usage

-------------------------- EXAMPLE --------------------------

.\IISRedirect.ps1 -URLRedirect "https://unifiedit.intra.net/owa" -OAB HTTP

"@
}	

#=============================================================================================
# Redirection
# More information http://www.iis.net/ConfigReference/system.webServer/httpRedirect
# Note: You must be sure to set the commit parameter to apphost when you use AppCmd.exe 
# to configure these settings. This commits the configuration settings to the appropriate 
# location section in the ApplicationHost.config file
#=============================================================================================

Write-host ""
Write-host "IIS Config is starting ... " -foregroundcolor Green
Write-host ""

Set-Location "$env:windir\System32\inetsrv"

.\appcmd.exe set config "Default Web Site" -section:system.webServer/httpRedirect /exactDestination:"False" /childonly:true /enabled:"True" /destination:$URLRedirect

.\appcmd.exe set config "Default Web Site/Aspnet_Client" -section:system.webServer/httpRedirect /enabled:false /commit:apphost
.\appcmd.exe set config "Default Web Site/Autodiscover" -section:system.webServer/httpRedirect /enabled:false /commit:apphost
.\appcmd.exe set config "Default Web Site/EWS" -section:system.webServer/httpRedirect /enabled:false /commit:apphost
.\appcmd.exe set config "Default Web Site/ECP" -section:system.webServer/httpRedirect /enabled:false /commit:apphost
.\appcmd.exe set config "Default Web Site/Microsoft-Server-ActiveSync" -section:system.webServer/httpRedirect /enabled:false /commit:apphost
.\appcmd.exe set config "Default Web Site/OWA" -section:system.webServer/httpRedirect /enabled:false /commit:apphost
.\appcmd.exe set config "Default Web Site/PowerShell" -section:system.webServer/httpRedirect /enabled:false /commit:apphost
.\appcmd.exe set config "Default Web Site/OAB" -section:system.webServer/httpRedirect /enabled:false /commit:apphost
.\appcmd.exe set config "Default Web Site/Rpc" -section:system.webServer/httpRedirect /enabled:false /commit:apphost
.\appcmd.exe set config "Default Web Site/RpcWithCert" -section:system.webServer/httpRedirect /enabled:false /commit:apphost

Write-host ""
Write-host "Redirection HTTP Done .. " -foregroundcolor Green
Write-host ""

#====================================================================================
# Suppress SSL on "Default Web Site"
# More information http://www.iis.net/ConfigReference/system.webServer/security/access
# Note: You must be sure to set the commit parameter to apphost when you use AppCmd.exe 
# to configure these settings. This commits the configuration settings to the appropriate 
# location section in the ApplicationHost.config file
#====================================================================================

Set-Location "$env:windir\System32\inetsrv"

# Unlock IIS Config
.\appcmd.exe unlock config -section:system.webServer/security/access

Write-Host ""
Write-Host "IIS Unlock Security Access Done ...." -foregroundcolor green
Write-Host "Setting SSLFlags now ..." -foregroundcolor green
Write-Host ""


.\appcmd.exe set config "Default Web Site" -section:system.webServer/security/access /sslFlags:""
.\appcmd.exe set config "Default Web Site/Aspnet_Client" -section:system.webServer/security/access /sslFlags:"Ssl,Ssl128"
.\appcmd.exe set config "Default Web Site/Autodiscover" -section:system.webServer/security/access  /sslFlags:"Ssl,Ssl128"
.\appcmd.exe set config "Default Web Site/EWS" -section:system.webServer/security/access /sslFlags:"Ssl,Ssl128"
.\appcmd.exe set config "Default Web Site/ECP" -section:system.webServer/security/access /sslFlags:"Ssl,Ssl128"
.\appcmd.exe set config "Default Web Site/Microsoft-Server-ActiveSync" -section:system.webServer/security/access /sslFlags:"Ssl,Ssl128"
.\appcmd.exe set config "Default Web Site/OWA" -section:system.webServer/security/access /sslFlags:"Ssl,Ssl128"
.\appcmd.exe set config "Default Web Site/PowerShell" -section:system.webServer/security/access /sslFlags:""
# OAB conf is set to HTTP or HTTPS
.\appcmd.exe set config "Default Web Site/OAB" -section:system.webServer/security/access /sslFlags:$OABConf
.\appcmd.exe set config "Default Web Site/Rpc" -section:system.webServer/security/access /sslFlags:"Ssl"
.\appcmd.exe set config "Default Web Site/RpcWithCert" -section:system.webServer/security/access /sslFlags:"Ssl,Ssl128"

If ($OAB -eq "HTTP")
{
Write-Host ""
Write-Host "OAB Vdir is set to HTTP so all the infrastructure must be set to HTTP for OAB access" -foregroundcolor yellow
Write-Host ""
}
Else
{
Write-Host ""
Write-Host "OAB Vdir is set to HTTPS so all the infrastructure must be set to HTTPS for OAB access" -foregroundcolor yellow
Write-Host ""
}

#==================================================================================================
# Change security settings on the web.config file that lost the Authenticated User permissions
# The Web.config file will be created during the IIS Redirection setup
#==================================================================================================


# get file web.config path and set the right permissions if exists

$setupRegistryPath = Get-ItemProperty -path 'HKLM:SOFTWARE\Microsoft\ExchangeServer\v14\Setup' 
$exchangeInstallPath = $setupRegistryPath.MsiInstallPath 
$WebConfigFile = ($exchangeInstallPath)+"ClientAccess\OAB\web.config"
$FileExists = Test-Path $WebConfigFile
$ErrorActionPreference = "Stop"

# Authenticated Users Group SID = S-1-5-11
# a "*" is added before the SID because icacls needs it when using SIDs

$Group = "*S-1-5-11"
$GrantPerm = icacls $WebConfigFile /grant:R $Group':R'

# Set Permissions on Web.Config file giving Read Access to Anthenticated Users Group

If ($FileExists -eq $True)
{
$GrantPerm
Write-Host ""
Write-Host "Security Settings on Web.Config file Done " -foregroundcolor green
Write-Host ""
}
	
Else {Write-Host "The Web.config File is not present in Directory: $exchangeInstallPath" -foregroundcolor red}

#==================================================================================================
# IISReset
#==================================================================================================

ResetIIS  

Ce script est en téléchargement via le lien : IISRedirect.zip

Hope this Help !

David Pekmez

About these ads

Laisser un commentaire

Choisissez une méthode de connexion pour poster votre commentaire:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

 
Suivre

Recevez les nouvelles publications par mail.

Rejoignez 224 autres abonnés

%d blogueurs aiment cette page :