Exchange Server 2013: Prestaging Computer Account DAG

Microsoft Exchange Server

In Exchange Server 2013 per poter creare un Database Availability Group è necessario “preparare” prima il Computer Account che verrà utilizzato dal DAG stesso. Questa operazione prende il nome di Prestaging e può avvenire o tramite interfaccia grafica (Active Directory User and Computers), sia tramite CmdLet PowerShell e script.

The Graphical Way

  • Su un Domain Controller lanciamo ADUC (dsa.msc)
  • Rendiamo visibili le Advanced Features (dal menù View spuntiamo la voce corrispondente)
  • Ci posizioniamo nella stessa OU dove sono i server Exchange quindi scegliamo: New Object -> Computer e gli assegniamo il nome che daremo al DAG (ad esempio… DAG01)Appena creato provvediamo a disabilitarlo (tasto destro -> Disable)
  • Procediamo andando a impostare i permessi
  • Tasto destro -> Property scegliamo il tab Security (se non lo troviamo è perché ci siano dimenticati di abilitare le Advanced Features). Scegliamo Add e andiamo ad aggiungere Exchange Trusted Subsistem con i permessi di Full Control. Sempre in Security ripetiamo l’operazione andando ad aggiungere il Computer Account del primo server Exchange che inseriremo ne DAG, sempre con il Full Control

2015_05_10_Exchange-01

The Shell Way

Nonostante l’indubbia comodità dell’interfaccia grafica, quando è possibile lavoro a “riga di comando” (shell o script che siano). Preferisco questo approccio fondamentalmente per due motivi: limita la possibilità di errori e variazioni ed  è più “ripetibile”: uno script o un comando una volta testato e verificato… non cambia. Basta parametrizzarlo o semplicemente modificarlo ogni volta che ci serve ed il gioco è fatto!

Se seguiamo l’approccio della via grafica, possiamo spezzare il problema in due parti: la creazione del Computer Account e l’assegnazione dei permessi.

Dopo aver caricato in PowerShell (avviata sempre con il Run As Administrator) il modulo di AD (import-module activedirectory), lanciamo il comando New-ADComputer con gli attributi necessari, ad esempio: New-ADComputer -name DAG01 -SamAccountName DAG01 -Path “CN=Computers,DC=PMINCLOUD,DC=COM” -Enabled $false -Description “Account per DAG01”

Ok adesso andiamo a assegnargli i permessi al gruppo con lo script seguente:

$PC = Get-ADComputer DAG01
$SID = (Get-ADGroup "Exchange Trusted Subsystem").sid
$Rights = [System.DirectoryServices.ActiveDirectoryRights]::GenericAll
$Permission = [System.Security.AccessControl.AccessControlType]::Allow
cd AD:
$ACL = get-acl $PC
$ACE = new-object System.DirectoryServices.ActiveDirectoryAccessRule $SID, $Rights, $Permission
$ACL.AddAccessRule($ACE)
set-acl -path $PC -AclObject $ACL
C:

Lo salviamo in un file .PS1 (facendo attenzione alle magie del copiaincolla) e lo lanciamo nella nostra sessione PS. Facciamo uno script (praticamente uguale) per assegnare al primo server Exchange:

$PC = Get-ADComputer DAG01
$SID = (Get-ADComputer "EX01").sid
$Rights = [System.DirectoryServices.ActiveDirectoryRights]::GenericAll
$Permission = [System.Security.AccessControl.AccessControlType]::Allow
cd AD:
$ACL = get-acl $PC
$ACE = new-object System.DirectoryServices.ActiveDirectoryAccessRule $SID, $Rights, $Permission
$ACL.AddAccessRule($ACE)
set-acl -path $PC -AclObject $ACL
C:

Lo lanciamo et voilà, le jeux sont fait!

Ovviamente… nessuno ci vieta di fare il merge dei due (o dei tre) script 😉