-
E' finito ieri il teched '08 di Orlando. Inutile dire che è stata un'esperienza molto bella e che spero di poter ripetere l'anno prossimo a Las Vegas.
Novità ne sono state illustrate tante ma fra tutte, quelle che voglio segnalarvi sono legate ad Exchange 2007.
La prima:
https://testexchangeconnectivity.com/
Questo è un sito fatto da due ragazzi in Microsoft che vi consente di testare la configurazione dei vostri CAS/ISA per l'accesso remoto: Outlook Anywhere, OWA, Active-Sync, SMTP. Funziona anche con 2003 e l'unica cosa richiesta è l'utilizzo di un account della vostra rete per testare effettivamente la connessione (by the way: usate un utente creato appositamente!!)
La seconda:
Quanti hanno installato Exchange 2007 SP1 su Windows 2008 e si sono chiesti: adesso come backuppo Exchange? Il nuovo sw di backup (Windows Backup) infatti non supporta più lo streaming backup di exchange come faceva ntbackup. Microsoft in seguito alle lamentele di praticamente chiunque, sta per rilasciare un addon (Hotfix? Update? Non lo sanno neanche loro...) del sw in questione che consentirà il backup di exchange 2007 tramite vss.
La terza:
Quanti vorrebbero installare Exchange 2007 su Hyper-V? L'attesa è QUASI finita: a 60 giorni dal rilascio di Hyper-V RTM, anche Exchange verrà supportato ufficialmente su Hyper-V, con documentazione e best-practices da seguire per l'implementazione. Alcune le hanno già illustrate: supporto solo per Windows 2008, dischi "fixed size" e non dinamici, nessuno snapshot (undo disk per chi usa virtual PC / Virtual Server)
Che ve ne pare?
Man mano che sistemo gli appunti e riguardo le sessioni, posterò le notizie che più mi sembrano interessanti....
-
Recentemente mi è capitato di dover creare, per un cliente, uno script che spostasse le cassette postali dei suoi utenti da exchange 2003 a exchange 2007 organizzandole però in base all'iniziale del cognome del'utente stesso.
Siccome credo possa essere utile, ho deciso di condividerlo con la community con il mio primo post su questo blog.
Inutile dirlo, requisito fondamentale è che nell'organizzazione sia presente almeno un server Exchange 2007 per poter avere accesso alla management shell.
NOTA BENE: questo non vuol dire che funziona solo su server Exchange 2007, anzi io posso spostare cassette anche da exchange 2003 a exchange 2003 o da exchange 2007 a exchange 2003, non ho vincoli in merito.
1: #Definisco le variabili
2: #$dc = dominio dove recuperare i dati
3: #$recType = il tipo di mailbox da spostare.
4: $dc = "contoso.it"
5: $recType = "LegacyMailbox"
Il valore di $recType può essere impostato, a seconda della migrazione che si vuole eseguire, sui seguenti valori:
- UserMailbox - Mailbox di Exchange 2007
- LegacyMailbox - Mailbox di Exchange 2003
- ResourceMailbox - Mailbox di risorse di Exchange 2007
- RoomEquipmentMailbox - Mailbox di risorse di Exchange 2007 (Meeting Room, proiettori)
1: #Definisco gli array che conterranno l'elenco degli utenti
2: #Uso gli array per poter poi lanciare il comando di move-mailbox
3: #su più cassette postali contemporaneamente altrimenti lavoreri mailbox per mailbox rallentando il processo
4: $usersAB = @()
5: $usersCD = @()
6: $usersEF = @()
7: $usersGH = @()
8: $usersIJ = @()
9: $usersKL = @()
10: $usersMN = @()
11: $usersOP = @()
12: $usersQR = @()
13: $usersST = @()
14: $usersUV = @()
15: $usersWXYZ = @()
L'uilizzo degli array per immagazzinare l'elenco degli utenti, è dovuto al fatto che poi così posso eseguire il comando "move-mailbox" in parallelo e non in "serie" sulle mailbox aumentando le prestazione dello script.
1: #Definisco i DB di destinazione
2: #Questi devono ovviamente essere già stati definiti sul / sui server di destinazione.
3: #Posso infatti organizzare le mailbox su più server distinti
4:
5: $maildbAB = "SRVExchange1\SG1\Utenti_A_B"
6: $maildbCD = "SRVExchange2\SG1\Utenti_C_D"
7: $maildbEF = "SRVExchange1\SG1\Utenti_E_F"
8: $maildbGH = "SRVExchange2\SG3\Utenti_G_H"
9: $maildbIJ = "SRVExchange1\SG3\Utenti_I_J"
10: $maildbKL = "SRVExchange2\SG3\Utenti_K_L"
11: $maildbMN = "SRVExchange1\SG4\Utenti_M_N"
12: $maildbOP = "SRVExchange2\SG4\Utenti_O_P"
13: $maildbQR = "SRVExchange1\SG4\Utenti_Q_R"
14: $maildbST = "SRVExchange2\SG5\Utenti_S_T"
15: $maildbUV = "SRVExchange1\SG5\Utenti_U_V"
16: $maildbWXYZ = "SRVExchange2\SG5\Utenti_W_X_Y_Z"
17:
Qui volevo solo far notare la possibilità di dividere le cassette postali su più server, a patto di aver creato in precedenza gli store necessari.
1: #In questo ciclo popolo gli array di utenti
2: $users = Get-User -DomainController $dc -RecipientTypeDetails $recType | select identity,@{n='Initial';e={$_.LastName.substring(0,1).ToUpper()}} 3: foreach ($user in $users){ 4: switch -regex ($user.initial) { 5: "[A-B]" {$usersAB += $user.identity} 6: "[C-D]" {$usersCD += $user.identity} 7: "[E-F]" {$usersEF += $user.identity} 8: "[G-H]" {$usersGH += $user.identity} 9: "[I-J]" {$usersIJ += $user.identity} 10: "[K-L]" {$usersKL += $user.identity} 11: "[M-N]" {$usersMN += $user.identity} 12: "[O-P]" {$usersOP += $user.identity} 13: "[Q-R]" {$usersQR += $user.identity} 14: "[S-T]" {$usersST += $user.identity} 15: "[U-V]" {$usersUV += $user.identity} 16: "[W-Z]" {$usersWXYZ += $user.identity} 17: }
18: }
Ho creato prima una HashTable con chiave "iniziale utente" e valore "identity utente"; per ogni utente poi ho verificato la chiave nel costrutto "switch" per poter ciclare nell'elenco utenti una sola volta, velocizzando il processo di caricamento array. L'utilizzo di "-regex" mi ha permesso di ridurre al minimo i "casi" da valutare. Per evitare problemi poi di case dei caratteri ho portato le iniziali in caratterre maiuscolo.
1: #Sposto le mailbox per gruppi di utenti
2: $usersAB | Move-Mailbox -TargetDatabase $maildbAB -Confirm:$TRUE
3: $usersCD | Move-Mailbox -TargetDatabase $maildbCD -Confirm:$TRUE
4: $usersEF | Move-Mailbox -TargetDatabase $maildbEF -Confirm:$TRUE
5: $usersGH | Move-Mailbox -TargetDatabase $maildbGH -Confirm:$TRUE
6: $usersIJ | Move-Mailbox -TargetDatabase $maildbIJ -Confirm:$TRUE
7: $usersKL | Move-Mailbox -TargetDatabase $maildbKL -Confirm:$TRUE
8: $usersMN | Move-Mailbox -TargetDatabase $maildbMN -Confirm:$TRUE
9: $usersOP | Move-Mailbox -TargetDatabase $maildbOP -Confirm:$TRUE
10: $usersQR | Move-Mailbox -TargetDatabase $maildbQR -Confirm:$TRUE
11: $usersST | Move-Mailbox -TargetDatabase $maildbST -Confirm:$TRUE
12: $usersUV | Move-Mailbox -TargetDatabase $maildbUV -Confirm:$TRUE
13: $usersWXYZ | Move-Mailbox -TargetDatabase $maildbWXYZ -Confirm:$TRUE
A questo punto sposto le cassette postali per gruppi di iniziali.
Il "-confirm:$true" può essere impostato a "$false" dopo le prime prove, per evitare interazione da parte dell'utente.
Alla prossima puntata...
Corrado