PowerShell: risultati delle query troncati? Come risolvere il problema

| |

Powershell_200px-GWallOggi voglio tornare a parlarvi di Powershell e di rapidi consigli per la sopravvivenza. Chi è abituato a tenere una finestra sempre aperta sul mondo Exchange in Cloud avrà sicuramente notato una particolarità che nel 90% dei casi non scatena alcun fastidio ma che in quel 10% decisamente più raro in cui imbattersi può diventare una limitazione: risultati troncati.

Stringhe che sul vostro prompt diventano improvvisamente più brevi e che vedono sostituirsi buona parte dei caratteri con i classici 3 puntini di sospensione (come nell’immagine che vi ripesco da un articolo più vecchio, qui di seguito):

pshell-loginOk

Il metodo per aggirare la limitazione è piuttosto semplice e dipende esclusivamente dalle preferenze di default applicate alla vostra Powershell, si tratta più precisamente del parametro $FormatEnumerationLimit, come viene spiegato molto bene qui: blogs.technet.com/b/heyscriptingguy/archive/2011/11/20/change-a-powershell-preference-variable-to-reveal-hidden-data.aspx. Potete verificarne il vostro attuale valore semplicemente digitando il parametro in Powershell:

PS C:\PS1\PS1> $FormatEnumerationLimit
4

E quindi modificarlo portandolo a -1 per evitare che i risultati vengano troncati. A questo però va aggiunta una piccola accortezza che riguarda il numero massimo di caratteri utilizzati per pubblicare un risultato in Powershell, parametro “Out-String” per la precisione, del quale si parla anche nel blog di Greig all’indirizzo greiginsydney.com/viewing-truncated-powershell-output. Un comando completo dovrà quindi integrare il parametro che per l’occasione potrete portare sempre più in “alto” in base alle vostre esigenze (nell’esempio del prossimo paragrafo mi è bastato un semplice Out-String -Width 500).

Possibile applicazione

Passiamo alla “ciccia” vera e propria. L’esigenza era quella di creare un piccolissimo script di “emergenza” nel caso in cui qualche collega (o il sottoscritto stesso) dimentichi che il comando –ResourceDelegates su una mailbox di risorsa (in questo caso una sala riunioni) non va ad aggiungere utenti in coda ma li sostituisce in toto con quelli digitati subito dopo rimuovendo quelli già esistenti (inseriti in precedenza, giorni o secoli prima!). Si modifica lo script, si integrano nuovi delegati in coda a quelli già esistenti e si rilancia lo script, a prova di scimmia, zero errori salvo catastrofi naturali o innaturali non prevedibili:


############################################################################################################################
# OFFICE 365: Ripristino delegati Sala Riunioni 1
#—————————————————————————————————————-
# Autore: GSolone
# Versione: 0.1
# Utilizzo: .\SalaRiunioni1-RipristinaDelegati.ps1
# Info: http://gioxx.org/tag/o365-powershell
# Ultima modifica: 15-01-2015
# Modifiche:
############################################################################################################################
#Tolgo temporaneamente il truncate dei risultati di Powershell
$FormatEnumerationLimit=-1
Write-Host "Reimposto i delegati sulla Sala Riunioni 1, attendi." -foregroundcolor Yellow
############################################################################################################################
# DI SEGUITO VIENE IMPORTATO TUTTO IL BLOCCO DELEGATI DA APPLICARE ALLA SALA, SE NECESSARIO AGGIUNGERE DELEGATI IN CODA, SALVARE LO SCRIPT E RILANCIARLO IN POWERSHELL
Set-CalendarProcessing -Identity salariunioni1@domain.tld -ResourceDelegates mario.rossi, claudio.bianchi, arturo.grigi
############################################################################################################################
""
Write-Host "Done." -foregroundcolor Green
""
Write-Host "Verifico le autorizzazioni sulla Sala Riunioni 1:" -foregroundcolor Yellow
Get-CalendarProcessing salariunioni1@domain.tld | Ft ResourceDelegates -AutoSize | Out-String -Width 500
#Reimposto lo standard del truncate di Powershell
$FormatEnumerationLimit=4

Nello script si vede chiaramente l’impiego della modifica al parametro $FormatEnumerationLimit e la necessità di modificare l’output della verifica delegati grazie alla forzatura dell’Out-String a 500 caratteri.

Rapido e indolore, come sempre.

Buon lavoro!

Correzioni, suggerimenti? Lascia un commento nell'apposita area qui di seguito o contattami privatamente.
Ti è piaciuto l'articolo? Offrimi un caffè! ☕ :-)

L'articolo potrebbe non essere aggiornato

Questo post è stato scritto più di 5 mesi fa, potrebbe non essere aggiornato. Per qualsiasi dubbio ti invito a lasciare un commento per chiedere ulteriori informazioni! :-)

Condividi l'articolo con i tuoi contatti:
Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

0 Commenti
Inline Feedbacks
View all comments