martedì 28 luglio 2020

Exchange Microsoft365 ibrido - Creazione nuovo utente

Nei giorni scorsi mi e' capitato di creare un nuovo utente ed una nuova casella di posta in un ambiente ibrido Exchange/Microsoft365.
Anche se inizialmente sembrava essere andato tutto bene, dopo poco si sono manifestati alcuni problemi.
L'utente nuovo non appariva nella GAL e non riusciva a spedire agli indirizzi on-prem (per fortuna pochi indirizzi).
Analizzando meglio la situazione mi sono reso conto che questo utente esisteva in AD, ma non appariva tra i remote mailbox users in exchange.
Questo rappresentava il nocciolo della questione, ovvero esisteva un utente AD, senza attributi exchange, a cui corrispondeva una casella/utente Office365.
Tutto nasce dal processo che ho seguito per creare l'utente.
In AD ho creato il nuovo utente. Ho sincronizzato AD con AzureAD. Quando e' apparso l'utente anche nella console di amministrazione di Microsoft 365, gli ho assegnato una licenza creando cosi' la mailbox. Ho saltato a pie' pari tutta la parte Exchange on-prem.
Il risultato finale e' stato questo.
La prox volta che creero un nuovo utente, provvedero a crearlo prima on-prem, e quindi ad effettuare un remote-move.
Ma adesso e' necessario sistemare le cose.

Il processo e' abbastanza semplice (basta saperlo!!!). Occorre:
 - recuperare l'ExchangeGUID della casella di posta remota
 - abilitare l'utente AD come mailbox remote user (a seguito di questa operazione l'utente deve apparire nella console di Exchange)
 - associare l'ExchangeGUID al nuovo utente Exchange
 - sincronizzare AD con Azure AD

PASSAGGIO 1
recuperare l'exchange guid della mailbox su Microsoft 365:

get-mailbox -identity p.pippo@disneylanda.it|fl ExchangeGuid

ExchangeGuid : a09ff8fb-26f7-4d81-9425-0c967acfadcd

PASSAGGIO 2
Abilitare l'utente AD come remote mailbox user
Occorre solo abilitare l'utente in Exchange, poiche in AD gia esiste.

Enable-RemoteMailbox p.pippo -RemoteRoutingAddress p.pippo@disneylanda.mail.onmicrosoft.com

A questo punto l'utente deve apparire nell'elnco dei contatti nella GUI di Exchange

PASSAGGIO 3
Associare il corretto ExchangeGUID (recuperato nel passaggio 1) al nuovo utente

Set-RemoteMailbox p.pippo -ExchangeGUID a09ff8fb-26f7-4d81-9425-0c967acfadcd

a09ff8fb-26f7-4d81-9425-0c967acfadcd

PASSAGGIO 4
sincronizzazione AD con AzureAD

Start-ADSyncSyncCycle -PolicyType Delta

adesso potete verificare se funziona la spedizione ad indirizzi on-prem e se l'utente appare nella GAL, quando fate una ricerca.



REFERENCE
https://www.msb365.blog/?p=866

mercoledì 15 luglio 2020

Exchange - cancellazione mailbox database

Nel caso in cui si voglia cancellare un database di posta di Exchange e' necessario spostare tutte le caselle che esso ospita su un altro DB. Soprattutto se il database che volete cancellare e' quello nativo, dovete ricordare di spostare anche le "arbiration mailboxes"
Con il seguente comando e' possibile vedere le caselle di Exchange e su quale DB sono ospitate:
Get-Mailbox |ft name,alias,database

Con il seguente comando, invece, e' possibile vedere le arbitration mailboxes e su quale DB sono ospitate:
Get-Mailbox -arbitration|ft name,alias,database

Con il seguente comando e' possibile spostare le arbitration mailbox su un altro DB
Get-Mailbox -Database "Mailbox Database 1" -arbitration | New-MoveRequest -TargetDatabase "Mailbox Database 2"

Le arbitration mailbox sono tre in Exchange2010 e 5 Exchange 2013/2016. Se cancellate si possono ricreare, ma devono esserci.
Sono usate per vari scopi, come OAB, federazione tra exchange in differenti organizzazioni, moderazione ecc.

Verifica dei database montati
Get-MailboxDatabase -Status | Sort Name | Format-Table Name, Server, Mounted

Smontare il database
Get-MailboxDatabase -Status | Sort Name | Format-Table Name, Server, Mounted
Dismount-Database "Mailbox Database 1" -Confirm:$False

Cancellare il database
Remove-MailboxDatabase "Mailbox Database 1" (da powershell si puo rimuovere il DB senza smontarlo, da GUI bisogna fare i 2 passaggi)



FORMA VELOCE
Spostamento caselle
Get-MailboxDatabase "Mailbox Database 1" |Get-Mailbox |New-MoveRequest -TargetDatabase "Mailbox Database 2" -Confirm:$true
Get-MailboxDatabase "Mailbox Database 1" |Get-Mailbox -Arbitration | New-MoveRequest -TargetDatabase "Mailbox Database 2"
Get-MailboxDatabase "Mailbox Database 1" |Get-Mailbox -Monitoring | New-MoveRequest -TargetDatabase "Mailbox Database 2" (exchange2013 in poi)
MONITORAGGIO SPOSTAMENTO
Get-MoveRequest
Get-MoveRequestStatistic
CANCELLAZIONE
Remove-MailboxDatabase "Mailbox Database 1"


P.S.
se prima di cancellare il DB lo tenete smontato per un po potrebbe essere necessario disabilitare l'indicizzazione verso quel DB. Per farlo e sufficiente usare il seguente comando:

Get-MailboxDatabase -identity "mailbox database" -IndexEnable $false

e riavviare il servizio di ricerca di Exchange.



REFERENCE
https://docs.microsoft.com/en-us/exchange/recreating-arbitration-mailboxes-exchange-2013-help
http://techgenix.com/what-are-arbitration-mailboxes-used/
http://www.thatlazyadmin.com/2191-2/



BACKUP E CANCELLAZIONE EVENTI WINDOWS

Backup e cancellazione eventi di Windows

Alcune volte mi e' capitato di voler pulire gli eventi di Windows, senza pero perderne traccia, in caso di necessita.
In questi casi si puo fare un backup del registro, e quindi svuotarlo.
Siccome i registri degli eventi sono molti, fare l'operazione a mano potrebbe richiedere molto tempo.
Fare l'operazione tramite script, e' invece un'operazione molto veloce e rapida.
Bisogna ricordarsi di eseguire lo script come amministratore

La prima versione esporta i registri degli eventi.
La seconda li esporta e li svuota.
Il path dove esportarli deve essere un percorso valido.
Al nome dei file esportati vengono anteposti la data e l'ora.


VERSIONE SOLO BACKUP

$datetime=((get-date).ToString("yyyyMMdd_HHmmss_"))
Get-winevent  -Listlog  * | select  Logname, Logfilepath | ForEach-Object -Process { 
$name = $datetime + $_.Logname
$safename = $name.Replace("/","-")
wevtutil.exe EPL $name  C:\Users\Owner\Desktop\eventlogs\$safename.evtx
}

VERSIONE BACKUP E CANCELLAZIONE

<#$datetime=((get-date).ToString("yyyyMMdd_HHmmss_"))
Get-winevent  -Listlog  * | select  Logname, Logfilepath | ForEach-Object -Process { 
$name = $_.Logname
$safename = $datetime + $_.Logname
$safename = $safename.Replace("/","-")
#Write-Output $safename
wevtutil.exe EPL $name  C:\temp\Backupevents\$safename.evtx
}#>

$datetime=((get-date).ToString("yyyyMMdd_HHmmss_"))
Get-winevent  -Listlog  * | select  Logname, Logfilepath | ForEach-Object -Process { 
$name = $_.Logname
$safename = $datetime + $_.Logname
$safename = $safename.Replace("/","-")
wevtutil.exe EPL $name  C:\temp\Backupevents\$safename.evtx
wevtutil cl $name
}

REFERENCE
https://stackoverflow.com/questions/1954203/timestamp-on-file-name-using-powershell
https://serverfault.com/questions/843645/need-a-backup-of-entire-event-log-of-windows-servers-using-cmd-or-powershell

Powershell - Visualizzare il contenuto delle variabili

Come visualizzare il contenuto di una variabile in Powershell.

Supponiamo che sia stata definita questa variabile.
E' possibile visualizzarne il contenuto in powershell oppure all'interno dello script in questi due modi (e sicuramente  ne esisteranno anche di altri)

Variabile
$name=((get-date).ToString("yyyyMMdd_HHmmss_"))

Metodo 1
write-output $name

Metodo 2
Get-Variable name

Powershell - commentare le righe

Come commentare le righe in powershell

Per commentare una riga singola

# riga di commento singola

Per commentare piu righe

<#

...
... righe di commento multiple
...
#>

REFERENCE

martedì 16 giugno 2020

Trasferire i ruoli FSMO tramite powershell

Trasferire i ruoli FSMO tramite powershell

IMPORTAZIONE MODULI
Import-Module ActiveDirectory

VERIFICA PROPRIETARI RUOLI FSMO
Get-ADForest corsi.local | ft DomainNamingMaster, SchemaMaster
Get-ADDomain corsi.local | ft InfrastructureMaster, PDCEmulator, RIDMaster

oppure
netdom query fsmo


TRANSFER ROLE

solo 1 ruolo
Move-ADDirectoryServerOperationMasterRole -Identity "dc2" PDCEmulator

tutti i ruoli
Move-ADDirectoryServerOperationMasterRole -Identity “dc2” –OperationMasterRole DomainNamingMaster,PDCEmulator,RIDMaster,SchemaMaster,InfrastructureMaster

Formula breve
PDCEmulator 0
RIDMaster 1
InfrastructureMaster 2
SchemaMaster 3
DomainNamingMaster 4
Move-ADDirectoryServerOperationMasterRole “SRVECONEL19” –OperationMasterRole 0,1,2,3,4

SEIZE ROLES - se non fosse piu disponibile il DC proprietario del ruolo
Move-ADDirectoryServerOperationMasterRole “dc2” –OperationMasterRole 0,1,2,3,4 -force

REFERENCE
https://theitbros.com/transfer-fsmo-roles-using-powershell/

domenica 14 giugno 2020

Mailstore - requisiti di sistema

Per il calcolo dei requisiti di sistema di mailstore esiste questa pagina, fatta molto bene con uno strumento per calcolare le risorse necessarie.
Per quanto riguarda la mia esperienza posso dirvi che mailstore usa molte risorse nelle operazioni di archiviazione e nelle operazioni di ridenomizazione e spostamento delle cartelle di un archivio. Se sulla macchina mailstore girano altri servizi, ne potrebbero risentire.
Per cui e' necessario assegnarli le giuste risorse.


OFFICE ADMX

Quando scaricate i template per le group policy di Office, vi verra proposto di scegliere tra la versione a 32 o 64 bit. Dovete scegliere in base alla versione del vostro sistema operativo (ormai quasi sempre 64 bit). I template di Office delle due versioni sono identici. Non c'entra nulla la versione di office 32/64 nella scelta della versione da scaricare. Giusto come promemoria :)

venerdì 5 giugno 2020

Copiare solo la struttura delle cartelle

Delle volte potrebbe essere necessario copiare la struttura delle cartelle senza i file contenuti in esse.
Per farlo si puo usare robocopy:

robocopy "E:\cartella1" E:\cartella2 /e /xf *


giovedì 4 giugno 2020

Come mettere il messaggio di risposta automatica in una shared mailbox

Aprire l'interfaccia di gestione di Exchange
cliccare in alto a dx, sull'utente e scegliere un altro utente
selezionare l'utente
Si apriranno le proprieta della casella, da cui e' possibile accedere alle risposte automatiche.
Fare lo stesso procedimento per togliere

REFERENCE
https://docs.microsoft.com/en-us/exchange/troubleshoot/configure-mailboxes/set-automatic-replies

lunedì 1 giugno 2020

MIGRAZIONE DA FRS a DFSR

Se vi portate dietro dei domini molto vecchi, magari partiti da Windows Server 2000 o 2003, prima o poi, aggiornando i domain controller vi troverete nella situazione di dover aggiornare il meccanismo di replica della SYSVOL da FRS a DFSR. Grazie alla sysvol sono replicati nel dominio script di logon e GPO. Il servizio responsabile della replica della sysvol tra domain controller era il file replication service. Da Windows server 2008 (R2?!?) il servizio di replica e' stato sostituito dal DFSR (distribuited file system), decisamente piu efficiente. Creando un nuovo dominio, a partire partendo da un server 2008 il servizio di replica di SYSVOL si appoggiava nativamente su DFS, mentre se il vostro dominio e' nato su versioni precedenti di windows e nel tempo e' stato portato avanti ed aggiornato avra mantenuto DFSR. Oggi la cosa non e' piu possibile. Da Windows Server 2016 in poi, oltre ai soliti discorsi di adprep, sarete costretti ad aggiornare FRS a DFSR.

Come al solito l'idea e' quella di partire con il piede giusto. Prima di iniziare la procedura verificate tutti i log degli eventi  FRS, DFRS, AD
Eseguite un DCDIAG: dcdiag /e /v /c /fix /f:c:\dcdiag.txt
Forzate una replica tra domain controller:
repadmin /syncall /force /aped
Verificate di non essere troppo indietro con gli aggiornamenti. Mi e' capitato di trovare 2008 R2 neppure aggiornati all'SP1.

Il processo e' molto semplice e si svolge in varie fasi. Una volta avviate le potremo ritenere concluse dopo che tutti i domain controller si sono sincronizzati. E' possibile verificarne l'esito tramite event viewer (replica DFS/DFSR). Solo dopo la conferma tramite eventi viewer vi consiglio di procedere alla successiva. In pratica e' una questione di pazienza

Le fasi sono le seguenti:
0 – Start State
1 – Prepared State
2 – Redirected State
3 – Eliminated State

Sono tutte reversibili tranne l'ultima.
tramite il comando dfsrmig /GetGlobalState e' possibile monitorarne l'avanzamento

dfsrmig /SetGlobalState 1
dfsrmig /GetGlobalState
L'evento da controllare: 8014 - DFSR
Non procedete prima di vedere questo evento su tutti i DC - E' possibile il rollback

dfsrmig /SetGlobalState 2
dfsrmig /GetGlobalState
L'evento da controllare: 8017 - DFSR
Non procedete prima di vedere questo evento su tutti i DC - E' possibile il rollback

dfsrmig /SetGlobalState 3
dfsrmig /GetGlobalState
L'evento da controllare: 8019 - DFSR

Al termine di tutto il servizio File replication service verra definitivamente stoppato e disabilitato.
Verificate che gli share netlogon e sysvol siano presenti e visibili.
Provate ad aggiungere un client al dominio, eventualmente.

E se si verificano problemi? E' un problema. Ho incontrato problemi la prima volta che ho affrontato il processo e sono stato costretto ad effettuare un rollback.
In primo luogo, per i rollback vale la stessa regola dell'avvio del processo:
va fatto in modo sequenziale, cioe' non si puo passare dalla fase 2 alla fase 0
e' necessario aspettare che il processo sia ultimato prima di procedere oltre

Il punto e' che se siete costretti ad un rollback vuol dire che qualcosa non ha funzionato. Anche il rollback potrebbe dare qualche noia. Ad esempio a me erano sparite netlogon e sysvol. Se questo dovesse succedere, molto probabilmente i client avranno problemi di accesso al dominio, e vi potreste trovare un po pressati. Vista la situazione ho deciso di aspettare e rifare a ritroso i vari passaggi, fino al dfsrmig /SetGlobalState 0. Dopodiche ho riavviato il servizio NETLOGON/Accesso di rete e le share, dopo poco sono riapparse e tutto a ripreso a funzionare bene.

Ho cercato di analizzare le cause del problema, ma alla ho deciso di puntare sugli aggiornamenti, visto che la macchina era molto indietro. Ricordate la macchina senza SP1 di cui ho parlato all'inizio? :)

REFERENCE


ACTIVE DIRECTORY FINE GRAINED PASSWORD

Non so se vi siete mai accoti che in active directory e' possibile applicare solo un tipo di policy per le password. Tutti gli utenti, siano essi domain user o enterprise admin, sono sottoposti agli stessi vincoli di complessita, lunghezza, scadenza ecc. ecc. Questa cosa non va sempre bene, soprattutto in realta piu vaste e dove ad esempio sono trattati dati sensibili o sensibilissimi. FGPP serve proprio a superare questo limite. Non e' una group policy e puo essere applicata a gruppi o utente, ma non ad OU. Nella sostanza viene creo un PSO (password security object) che viene poi applicato a gruppi od utenti specifici.

COME SI FA?
Dalla "Active directory administrative center" console (potete usare anche adsi edit se volete), si seleziona il dominio e si va dentro SYSTEM.
Tra i contaneir presenti troverete anche quello chiamato "PASSWORD SETTINGS CONTAINER". Tasto DX - new - password settings.
Nella scheramata che si aprira impostare le opzioni e scegliere un gruppo a cui assegnarle. Date OK, ed inserire gli utenti nel gruppo assegnato. Siete pronti a verificare che il tutto funzioni

ALCUNE NOTE
Io preferisco usare sempre i gruppi anche nel caso in cui si parli di un singolo utente. A colpo d'occhio capisco le FGPP assegnate controllando a quali gruppi appartiene.
E' una buona idea usare dei nomi di gruppi che richiamino quelli scelti per le policy
Per controllare le FGPP assegnate a gruppi ed utenti usate sempre ADDC. Selezionate il gruppo tasto dx - proprieta - password settings, oppure sull'utente tasto dx - view resultant password settings

GPO - impostazione password
L'impostazione delle opzioni per le password in un dominio viene effettuato dalla default domain policy, andando nel seguente percorso: Policies-Windows settings-security settings-account policies.
Dopo aver fatto le opportune modifiche potete verificare le impostazioni delle password eseguendo secpol.msc da un domain controller.

Ricordate sempre di abilitare il blocco degli utenti dopo un certo numero di tentativi falliti. Meglio un utente bloccato che un server bucato :)

domenica 31 maggio 2020

Active directory Recycle bin

Una cosa che credo sia molto utile di AD e' il recycle bin, che non e' abilitato di default.

Come funziona il cestino e come abilitarlo.
Per abilitare il cestino occorre usare la "Active directory administrative center" console.
Nella colonna di destra, dopo aver selezionato il dominio apparira la voce "enable recycle bin". Cliccare e confermare. Al termine della propagazione a tutti i domain controller vederete apparire la nuova OU "deleted objects", ovvero il cestino di active directory. Accedendo alla ou e' possibile vedere gli oggetti cancellati e ripristinarli. Tutto qui :)