Archives For Lavoro

È un problema che ho affrontato qualche tempo fa e che inizialmente mi ha dato un po’ di grattacapi, salvo poi trovare casi molti simili che mi hanno aiutato a risolvere l’anomalia. Il disco di un PC si satura e la colpa è della cartella C:\Windows\Temp, invasa da file senza estensione, dal nome che comincia sempre per cab_. Perché accade? Il problema viene generato da una installazione di alcuni aggiornamenti (da Windows Update) evidentemente non andata a buon fine, non del tutto almeno, nonostante la schermata preposta di Microsoft dica che tutto va bene.

Windows: l'invasione dei CBSPersist e dei cab_ (C:WindowsTemp)

Facendo un po’ più di attenzione, si scopre che in realtà di cartella che occupa spazio ce n’è un’altra. Teoricamente dovresti trovare anomala anche la C:\Windows\Logs\CBS, all’interno della quale dovresti trovare dei file CAB veri, e un file di log dalla dimensione decisamente robusta (CBS.log). L’anomalia parte proprio da qui. Partiamo con le opportune presentazioni (recuperate con una semplice ricerca):

CBS stands for “Component-Based Servicing” and it basically is the way components get installed and uninstalled during updates. It is the reason you see “Stage 1”, “Stage 2”, and “Stage 3” during the Service Pack 1 install (for example). “Stage 2” and “Stage 3” exists for the registry keys and files that are normally locked during regular operation.

Tutto chiaro? Un log in cui ogni aggiornamento di Microsoft va a scrivere e tiene traccia di ogni movimento. Un log destinato –per forza– a crescere, e che per un comportamento assolutamente standard va a ruotare, sospendendo la scrittura, finendo in un CAB che ne riduce (di parecchio) la dimensione, e infine ne prepara uno nuovo in cui tornare a scrivere, per poi ricominciare il giro ancora e ancora.

Se per qualsivoglia motivo questo procedimento non fila liscio, il CBS.log diventa più grande del previsto, ingestibile e –soprattutto– impossibile da mettere in un CAB nei tempi previsti. Il risultato? Cartella Temp di Windows piena di tentativi falliti di comprimere quel log, cartella CBS che si ingigantisce.

Diverse le fonti dove ho trovati informazioni in merito e persone capitate nello stesso vortice, ne ho selezionate tre che mi hanno aiutato:

Riepilogando, tutto questo può accadere in qualsiasi momento e -in base alla capacità del disco e lo spazio libero da poter sfruttare- potresti accorgertene a mesi (o forse anni) di distanza. Io ho scoperto di essere soggetto al problema solo perché un utente ha lamentato poco spazio libero e mi ha fatto scoprire l’anomalia. Le operazioni da affrontare per resettare il procedimento di scrittura e archiviazione del CBS.log è questo:

  • Fermare il servizio Windows Update.
  • Rinominare la cartella della Software Distribution (C:\Windows\SoftwareDistribution).
  • Cancellare ogni file in C:\Windows\Temp (ovviamente ignorando quelli in uso e che faranno comparire il classico errore a video di impossibilità di cancellazione, nda).
  • Riavviare il servizio di Windows Update.
  • Fermare il servizio Trusted Installer.
  • Cancellare ogni file in C:\Windows\Logs\CBS.
  • Riavviare il servizio Trusted Installer.
  • Forzare una ricerca aggiornamenti di Windows Update (direttamente via prompt).

Visto che questa cosa potrebbe capitare ad altri client in futuro, ho pensato di tradurla in codice batch, da dare in pasto anche al Kace di Dell (tanto per fare un esempio). Il tutto intervallando alcuni secondi di pausa prima di poter eseguire l’operazione successiva (dando così modo al client di non saltare alcun passaggio fondamentale):

sc stop wuauserv
ping 127.0.0.1 -n 7 > NUL
cd \Windows\
move SoftwareDistribution SoftwareDistribution_old
del /S C:\Windows\Temp\* /Q
FOR /D %%p IN ("C:\Windows\Temp\*.*") DO rmdir "%%p" /s /q
sc start wuauserv
rd /S /Q C:\Windows\SoftwareDistribution_old
sc stop TrustedInstaller
ping 127.0.0.1 -n 7 > NUL
del /S C:\Windows\Logs\CBS* /Q
sc start TrustedInstaller
ping 127.0.0.1 -n 5 > NUL
wuauclt.exe /detectnow

Così facendo ho risolto il problema e liberato spazio sul disco. Ho fatto queste modifiche al sistema mesi fa e il problema non si è più presentato (a me, ma anche ad altri utenti che nel frattempo ho rilevato nella nostra rete).

Facile (soprattutto se si ha un aiuto nella software distribution) fare un’analisi all’interno della rete aziendale e cercare le macchine che soffrono la stessa anomalia ma che ancora non hanno saturato il disco, basterà cercare nella cartella C:\Windows\Temp una forte presenza di cab_, così da portarsi avanti ed evitare che il problema si presenti agli occhi dell’utente.

Estote parati (cit.).

G

Che sia Domino (di IBM) o Exchange (di Microsoft), per il tuo server di posta sei una identità. A te può corrispondere un indirizzo di posta principale ma anche più alias, se impostati lato server. Per questo motivo può tornare utile intercettare (magari per inserire in diversa cartella, nda) una mail inviata a uno di quegli alias.

Anche se apparentemente impossibile (perché arrivata a destinazione, la mail sarà comunque indirizzata a te, finirà in Posta in arrivo nonostante la tua sudata regola appena creata), la possibilità di intercettare questo tipo di comunicazioni c’è.

Outlook e Shared Mailbox: Auto-Mapping o più file dati? 1

Dovrai semplicemente andare a modificare una regola di Outlook già creata (e magari non funzionante) oppure crearla da zero, se ti serve. Il “trucco” (se così si può chiamare) è basare la ricerca sul testo contenuto “nell’intestazione“, quello che tecnicamente viene meglio definito come header della mail:

Dopo averlo composto e inviato, il messaggio viene elaborato dal server di posta elettronica presso il provider di servizi Internet (ISP). Se il messaggio è destinato a qualcuno che non ha una cassetta postale nel server di posta elettronica del mittente, il server lo inoltra a un altro server. Il messaggio viene inoltrato da server a server. Può passare tra diversi server di posta elettronica finché non raggiunge quello in cui il destinatario ha una cassetta postale.
A partire dalla creazione del messaggio, le relative informazioni vengono aggiunte a una sezione nascosta del messaggio, nota come intestazione Internet. Le informazioni includono dettagli tecnici sul messaggio, ad esempio chi lo ha creato, il software usato per comporlo e i server di posta elettronica in cui è transitato prima di raggiungere il destinatario. Questi dettagli consentono di identificare i problemi relativi al messaggio o di individuare l’origine di messaggi commerciali indesiderati.

fonte: support.office.com/it-it/article/Visualizzare-le-intestazioni-dei-messaggi-di-posta-elettronica-cd039382-dc6e-4264-ac74-c048563d212c

Quindi, per andare al dunque, ti basterà selezionare il percorso RegoleCrea regolaOpzioni avanzatecon parole specifiche nell’intestazione del messaggio, e specificare l’alias come fosse testo:

Outlook: intercettare mail inviate a un proprio alias

Il resto è chiaramente a tua scelta. Potrai decidere di spostare automaticamente la mail in una specifica cartella, di segnarla come già letta o di mettere un particolare alert audio, ecc., è chiaro che dipende dalla specifica esigenza.

Non servirà fare altro. La regola è immediatamente funzionante e potresti anche scegliere di farla agire sul pregresso, per spostare ora tutte le mail precedentemente ricevute al tuo indirizzo secondario.

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"!

Per la serie “sbagliando si impara“, anche se in realtà vale anche quella che dice che l’errore davanti ai propri occhi è anche quello che continua a sfuggire pure alla centesima rilettura, oggi prendo appunti su PowerShell e ordinamento dei risultati richiesti.

Nello specifico volevo ottenere una lista di contatti con un preciso dominio impostato nel PrimarySMTPAddress (WindowsEmailAddress), ho pensato bene quindi di lanciare un comando semplice (il Get-MailContact), filtrare in output solo ciò che mi interessava e pretendere di ordinare l’output dopo averlo già generato:

PS C:\PS1\PS1> Get-MailContact -ResultSize unlimited | where {$_.WindowsEmailAddress -like "*@contoso.com"} | ft name,Alias,WindowsEmailAddress | sort name
out-lineoutput : L'oggetto di tipo "Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData" non è valido oppure non è stato specificato nella sequenza corretta. L'errore dipende probabilmente da un comando "format-*" specificato dall'utente in conflitto con la formattazione predefinita.
    + CategoryInfo          : InvalidData: (:) [out-lineoutput], InvalidOperationException
    + FullyQualifiedErrorId : ConsoleLineOutputOutOfSequencePacket,Microsoft.PowerShell.Commands.OutLineOutputCommand

Per una illogica del mio unico neurone alla ricerca di aria fresca, mi ostinavo a chiedere un sort in seguito alla formattazione della tabella in output, quando in realtà il sort va chiesto prima di preparare i risultati da mostrare a video (cosa abbastanza normale a pensarci a sangue freddo, non trovi?). Il modo giusto per chiederlo è quindi anteporlo al Format-Table:

Get-MailContact -ResultSize unlimited | where {$_.WindowsEmailAddress -like "*@contoso.com"} | sort name | ft name,Alias,WindowsEmailAddress

Che produce un risultato a video assolutamente preciso, secondo richiesta impartita:

Sbagliando si impara: PowerShell, Sort e Format-Table

Metto da parte, lezione imparata, nel frattempo mi bastono da solo.

G

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"!

Uno di quei consigli che sono facili da ricordare e da recuperare con una ricerca nel blog, in case of emergency. Gestisci un tenant con centinaia (se non di più) persone registrate e non puoi certo ricordare uno a uno gli indirizzi di posta gestiti, soprattutto quando si parla di persone con uno o più alias a testa, shared mailbox, contatti e chissà quanto altro ancora, Exchange è un mondo infinito, nella sua soluzione cloud è poi in continua evoluzione.

Come cerchi un indirizzo di posta elettronica all’interno del tenant? Come capisci a chi o cosa è stato assegnato? Tutto sommato semplice: usi l’ennesima query.

Get-Recipient -Filter {EmailAddresses -like "*mario.rossi*"}

Powershell office 365 cercare un indirizzo di posta

In un solo colpo trovi qualsiasi cosa abbia uno specifico (o parte del) indirizzo di posta elettronica tra quelli a lui assegnati, a prescindere che si tratti di una mailbox (personal o shared non importa), un contatto mail, un mail user. Nella query che ho riportato qui sopra il *mario.rossi* cerca qualunque indirizzo contenga quel nome.cognome, a prescindere dalla sua posizione, ignorando totalmente il dominio. Funziona, è immediato, è maledettamente comodo, soprattutto quando ti ritrovi di fronte alla domanda secca di un tuo superiore oppure un errore di PowerShell quando si tenta di creare una casella di posta elettronica con lo stesso indirizzo di posta di qualcosa di già esistente.

Per ovvi motivi, il filtro può funzionare con qualsiasi parametro facente compatibile con il Get-Recipient, basterà modificare un tantinello la richiesta da far eseguire a PowerShell, per esempio:

Get-Recipient -Filter { Name -like "*alessio*"}

Ricercherà qualsiasi cosa abbia “Alessio” nel campo nome, a prescindere -ancora una volta- che si tratti di casella di posta, contatto o gruppo (e non solo).

Buon lavoro.

G

Più che un vero articolo, si tratta sul serio di appunti pubblici, riflessioni e domanda finale che completa il pacchetto. Sì perché se c’è una cosa che odio, è dover fare da tramite per operazioni anche molto banali, come seguire un feed o accedere a una pagina contenente informazioni che possono essere di dominio più o meno pubblico. Questo è il caso di Office 365 e del servizio di Health Status, diventato accessibile per i soli clienti, senza apparente possibilità di facile condivisione.

Appunti su Health Status di Office 365 e utenti non amministratori

Tu che gestisci un tenant Exchange in cloud, sai di cosa sto parlando, vero? Hai a che fare con sedi periferiche della tua azienda? Colleghi che sanno capirti quando parli e ai quali fanno capo anche altri utenti che generalmente non si interfacciano con te? Come hai superato l’ostacolo nato lo scorso giugno? In breve: Microsoft ha scelto di disabilitare il feed RSS che permetteva di rimanere informati sullo stato di salute della sua infrastruttura da qualsiasi dispositivo, browser o client di posta elettronica. Sul tenant del mio gruppo, gestiamo alcuni utenti non amministratori ma che raccolgono le richieste di supporto degli utenti per le relative sedi, trovandosi in difficoltà nel caso in cui il servizio di Office 365 abbia qualche problema.

Il risultato? Arriverà a me (o a un collega) una mail o una telefonata di richiesta informazioni e toccherà inviare una risposta basata sul semplice copia-incolla dalla Dashboard amministrativa di Microsoft.

L’azienda di Remond spiega che basterà fare uso di un ruolo amministrativo ad-hoc, o passare dalla sua Mobile App che però non accetta nessuno fuorché un amministratore (anche limitato): support.office.com/en-us/article/How-to-check-Office-365-service-health-932AD3AD-533C-418A-B938-6E44E8BC33B0?ui=en-US&rs=en-US&ad=US&fromAR=1

Office 365 Admin
Price: Free
Office 365 Admin
Price: Free

Un amministratore ad-hoc

Io a quei ruoli ho dato un’occhiata, ma non ho trovato nulla che mi portasse al documentato “Service Health Admin Role“. Mi sono dovuto “accontentare” del Service Administrator, il quale però ha anche accesso alla lista di tutti gli utenti registrati nel tenant, con relativi dettagli di licenza, alias e molto altro ancora, seppur in sola lettura. I ruoli attualmente disponibili si trovano alla pagina support.office.com/en-us/article/About-Office-365-admin-roles-da585eea-f576-4f55-a1e0-87090b6aaa9d.

La domanda è quindi …

… hai avuto la necessità di gestire questa particolarità? Se si, come hai fatto? Ho provato ad aprire una richiesta di supporto in Microsoft senza però successo. Sarà probabilmente finita in quel calderone di feedback dei clienti che ogni tanto vengono aperti, controllati e richiusi, in attesa che il team di sviluppatori possa integrare questa necessità generata da una loro decisione, da una loro limitazione imposta.

L’area commenti è aperta e disponibile a ricevere ogni possibile consiglio, ovviamente graditissimo.

Grazie a tutti!

G