Archives For PowerShell per Office 365

Pillole

Le pillole sono articoli di veloce lettura dedicati a notizie, script o qualsiasi altra cosa possa essere "divorata e messa in pratica" con poco. Uno spazio del blog riservato ai post "a bruciapelo"!

PowerShell: risultati delle query troncati? Come risolvere il problemaCi avevi mai pensato? In un prompt dei comandi, lanciare un findstr (con i giusti parametri) equivale a cercare un particolare che ti interessa, escludendo tutto il resto. Mi viene in mente un esempio lampo: di una lista di servizi che girano sul sistema (sc query) potrebbe interessarmi sapere se c’è o meno TeamViewer. Tradurlo in un comando di prompt vorrebbe significare qualcosa di molto simile a:

sc query | findstr /I teamviewer
NOME_SERVIZIO    : TeamViewer
NOME_VISUALIZZATO: TeamViewer 11

Ma su PowerShell? Lanciare un findstr mentre si lavora sulla propria sessione di Exchange in cloud non è proprio la stessa cosa, di certo non produce i risultati sperati. Fortunatamente esiste un’alternativa che puoi utilizzare in coda a qualsivoglia comando. Io ho riprodotto un caso specifico che mi ha permesso di individuare un utente in particolare all’interno di una lista più nutrita ottenuta esportando tutte le utenze che hanno un particolare dominio di posta come PrimarySMTPAddress.

Provo a semplificarla: di tutti quelli che hanno l’indirizzo “@dominio1.tld” io voglio sapere se tra di loro si nasconde qualcuno che abbia “Mario” all’interno del suo Alias di Exchange. Questo il risultato per step su PowerShell:

Get-Mailbox -ResultSize Unlimited | where {$_.PrimarySmtpAddress -like "*@dominio1.tld"}

Produce una lista riepilogativa di tutti coloro che hanno l’indirizzo di posta primario con il dominio da me specificato. A questo punto, per filtrare esclusivamente chi fa match con “Mario” all’interno del suo alias, ti basterà filtrare i risultati con il classico pipe in coda:

Get-Mailbox -ResultSize Unlimited | where {$_.PrimarySmtpAddress -like "*@dominio1.tld"} | ? {$_.Alias -match "mario"}

Quel | ? {$_.Alias -match "mario"} si traduce con qualsiasi cosa contenga “mario” all’interno dell’alias, serve quindi a individuare anche un utente che nell’alias potrebbe avere mario.pippo o mariopippo o qualsiasi altra combinazione. Se la query lanciata restituirà un risultato maggiore di zero (e troverà almeno un Mario tra gli alias) otterrai a video il risultato voluto.

Buon lavoro! :-)

Condividi l'articolo con i tuoi contatti:

Argomento molto spinoso, non voglio perdere troppo tempo, mi piacerebbe utilizzare questo articolo un po’ come se fosse stato il mio blocco appunti nel momento preciso in cui mi è stata scalata una richiesta di HelpDesk, si parlava della necessità di recuperare della posta persa e cancellata anche da cestino, apparentemente introvabile nelle mail “recuperabili” di Outlook e nello stato di limbo (Grace Period), su server, per quel pericoloso massimo di 15 giorni oltre i quali non c’è più nulla da fare.

Exchange, PowerShell e Office 365: recupero della posta cancellata 2

 

Tutto quello che ti serve sapere per gestire la posta eliminata e recuperabile tramite Outlook o WebMail, è contenuto all’interno della documentazione di Microsoft, la trovi all’indirizzo support.office.com/it-it/article/Recuperare-elementi-o-messaggi-di-posta-elettronica-eliminati-in-Outlook-Web-App-c3d8fc15-eeef-4f1c-81df-e27964b7edd4.

E se questo non bastasse? Se ti toccasse di dover mettere mano al server via PowerShell?

Cosa c’è da sapere

È tutta una questione di ruoli, tipicamente non assegnati al proprio gruppo di appartenenza, neanche se si fa parte degli amministratori. Per partire servirà quindi accedere all’interfaccia di amministrazione di Office 365 → ECP (Exchange Control Panel), andare in PermissionsAdmin Roles, quindi fare clic su Organization Management:

PowerShell e Office 365: recupero della posta cancellata

Questo ti permetterà di aggiungere il ruolo di “Mailbox Import Export” a quelli previsti dal gruppo, del quale gli amministratori del tenant fanno certamente parte (verificalo ugualmente, non si sa mai). Servirà ad aggiungere comandi disponibili (e richiamabili) da PowerShell:

PowerShell e Office 365: recupero della posta cancellata 1

Dopo aver salvato la modifica, lancia la PowerShell e collegati al tuo server Exchange in Cloud, avrai a disposizione più comandi nella sessione remota, tra i quali quelli dedicati al “Search-Mailbox“, fondamentale, tra le altre cose, per i recuperi della posta eliminata. Nel mio caso ho provato a ripristinare tutte le mail ricevute e inviate in un particolare intervallo di tempo, tradotto in codice PowerShell si ottiene qualcosa di simile a:

Search-Mailbox -Identity shared@contoso.com -SearchQuery {sent:"01/01/2015..13/05/2016" OR received:"01/01/2015..13/05/2016"} -TargetMailbox admin1@contoso.com -TargetFolder "Recovery" -LogLevel Full

La stringa mi ha permesso di recuperare tutto quello che è stato inviato o ricevuto dal primo gennaio 2015 al 13 maggio del 2016. Il comando Search-Mailbox accetta il parametro -Identity shared@contoso.com (shared@contoso.com può essere sostituito con qualsiasi altro indirizzo di posta gestito dal proprio Exchange) attraverso il quale dirgli su che casella dovrà andare a lavorare. La SeachQuery permette diversi parametri, puoi trovare alcuni riferimenti in Technet, all’indirizzo technet.microsoft.com/en-us/library/dd298064(v=exchg.150).aspx. Recovery è una cartella (la TargetFolder) appositamente creata nella casella di posta dell’amministratore (che corrisponde alla TargetMailbox), all’interno della quale verrà riprodotto l’albero delle cartelle della casella di posta sorgente (shared@contoso.com) e inserite tutte le mail recuperate.

In alternativa, puoi provare a recuperare esclusivamente le mail cancellate (e non più presenti nel cestino), in villeggiatura nel cassonetto (Dumpster), un po’ quello che è possibile fare dalla WebMail di Outlook (OWA) o dalla funzione Recupera elementi eliminati dal server del client Outlook di Office (installato in locale):

Search-Mailbox -Identity shared@contoso.com -SearchDumpsterOnly -TargetMailbox admin1@contoso.com -TargetFolder "Recovery"

Vale quanto già detto prima, Recovery resta la cartella di recupero mail (dove verrà creata una finta struttura ad albero, che stavolta presenterà esclusivamente i Recoverable items), la casella utilizzata per appoggiare il risultato ottenuto è quella di un amministratore di Exchange (ma puoi indicare anche quella di un utente qualsiasi), la sorgente (shared@contoso.com) è una casella di posta condivisa, ma anche stavolta è possibile sostituirla con qualsiasi altra casella di posta elettronica gestita dall’Exchange.

Ti propongo ulteriori fonti per poter scoprire qualcosa in più riguardo questo tipo di casi da affrontare:

Tutto materiale che mi è tornato utile nel momento del bisogno, senza considerare che non si finisce mai di imparare e che casi come questi cadono tra capo e collo nel momento peggiore possibile, quando ovviamente “non potevo assolutamente perdere questa mail, scusa se me ne sono accorto quando ormai mancano solo due ore alla distruzione totale di quanto rimosso distrattamente” ;-)

L’operazione, una volta lanciata, durerà del tempo. Prenditi una pausa, fai altro, sgranchisci gambe e schiena, al termine verrai avvisato con tanto di statistiche sul recupero (quante mail sono state trovate e riportate in vita, quanto tempo è passato, ecc.), ora non resta che incrociare qualsiasi dito possibile e verificare di aver recuperato tutto ciò che serve al tuo utente.

Buon lavoro!

Condividi l'articolo con i tuoi contatti: