martedì 26 luglio 2016

MS Exchange: Elencare i Distribution Groups tramite EMS

Per elencare i gruppi di distribuzione (Distribution Group) definiti sull'infrastruttura di posta MS Exchange è possibile utilizzare il cmdlet Get-DistributionGroup tramite EMS (Exchange Management Shell).
Per default vengono visualizzati solo i primi 1000 item pertanto, se nell'infrastruttura sono presenti più di 1000 gruppi di distribuzione, è necessario utilizzare il parametro -ResultSize così come indicato di seguito.

Get-DistributionGroup -ResultSize Unlimited

Con il cmdlet  Get-DistributionGroup possiamo anche verificare se esiste un determinato gruppo di distribuzione passando il nome al cmdlet: Get-DistributionGroup <nome_gruppo_distribuzione>

Ad es. per visualizzare informazioni sul gruppo di distribuzione denominato "supporto"
Get-DistributionGroup supporto
oppure
Get-DistributionGroup -Identity supporto




Il cmdlet accetta anche caratteri wildcard
Get-DistributionGroup suppor*

Utilizzando il parametro -Anr, è possibile utilizzare una stringa parziale che verrà ricercata tra diversi attributi del gruppo di distribuzione in particolare in CommonName (CN)DisplayNameFirstNameLastName e Alias.
Il seguente comando restituisce tutti i gruppi di distribuzione in cui all'interno di uno degli attributi indicati precedentemente compare la stringa "supporto"
Get-DistributionGroup -Anr supporto 

Per visualizzare maggiori dettagli relativamente ad un gruppo di distribuzione è possibile utilizzare un cmdlet Format come ad es. Format-List
Get-DistributionGroup -Identity supporto | Format-List

lunedì 25 luglio 2016

PowerShell: Verificare l'esistenza di un oggetto con Test-Path

Il cmdlet Test-Path viene generalmente utilizzato per verificare l'esistenza di un percorso specifico, tuttavia può essere utilizzato per verificare anche altri tipi di oggetti. La sua sintassi è la seguente:

Test-Path [-Path] <String[]> [-Credential <PSCredential> ] [-Exclude <String[]> ] [-Filter <String> ] [-Include <String[]> ] [-InformationAction <System.Management.Automation.ActionPreference> {SilentlyContinue | Stop | Continue | Inquire | Ignore | Suspend} ] [-InformationVariable <System.String> ] [-IsValid] [-NewerThan <Nullable [System.DateTime]> ] [-OlderThan <Nullable [System.DateTime]> ] [-PathType <TestPathType> {Any | Container | Leaf} ] [-UseTransaction] [ <CommonParameters>]

oppure


Test-Path -LiteralPath <String[]> [-Credential <PSCredential> ] [-Exclude <String[]> ] [-Filter <String> ] [-Include <String[]> ] [-InformationAction <System.Management.Automation.ActionPreference> {SilentlyContinue | Stop | Continue | Inquire | Ignore | Suspend} ] [-InformationVariable <System.String> ] [-IsValid] [-NewerThan <Nullable [System.DateTime]> ] [-OlderThan <Nullable [System.DateTime]> ] [-PathType <TestPathType> {Any | Container | Leaf} ] [-UseTransaction] [ <CommonParameters>]

Parametri principali

-Credential
Permette di specificare le credenziali con cui eseguire il comando. É possibile indicare il nome utente (come ad es. "utente1"), il nome utente e il dominio (ad es. "Contoso\utente1") oppure passare un oggetto generato da Get-Credential contenente le credenziali.

-Exclude
Esclude un elemento dalla verifica. Ad es. se si intende escludere i file di testo inclusi in una cartella possiamo utilizzare il parametro -Exclude "*.txt".

-Filter
Permettere si specificare un filtro relativo al parametro -Path.

-Include
L'opposto di Exclude, consente di includere elementi da verificare.

-IsValid
Indipendentemente se il percorso esista o meno, con il parametro IsValid si va a verificare se la sintassi del path specificato è corretta. Restituisce True se la sintassi è corretta e False in caso contrario.

-LiteralPath
Specifica il percorso che si intende verificare. A differenza del parametro Path, il valore di LiteralPath è utilizzato esattamente come digitato: non sono supportati caratteri wildcard e i caratteri di escape vanno racchiusi tra apici singoli.

-Path
Specifica il percorso da testare. Accetta caratteri wildcard. I percorsi che contengono spazi vanno racchiusi tra apici.

-PathType
Permette di specificare se l'oggetto indicato dal parametro Path è di un particolare tipo:
Container. Un elemento che contiene altri elementi come ad es. una directory.
Leaf. Un elemento singolo che non contiene altri elementi come ad es. un file.
Any.  Qualsiasi tipo.

PowerShell, Test-Path
FIG 1 - PowerShell, Test-Path


Vediamo qualche esempio.



Esempio 1
Test-Path -Path "C:\Users\Virtual\Desktop\Cartella Archivio"
Verifica se la cartella C:\Users\Virtual\Desktop\Cartella Archivio esiste in tal caso restituisce True in caso contrario False.

Esempio 2
Test-Path -Path "C:\Progetti\c#\*" -exclude *.cpp
Verifica se la cartella C:\Progetti\c#\ contiene file ad esclusione dei file con estensione .cpp.

Esempio 3
Test-Path -Path HKLM:\Software\Microsoft\PowerShell\
Il cmdlet Test-Path può essere utilizzato anche per verificare la presenza di chiavi di registro. In questo esempio Test-Path verifica se esiste la chiave di registro HKEY_LOCAL_MACHINE\Software\Microsoft\PowerShell.

Esempio 4
Test-Path Env:\OS
Verifica se è definita la variabile d'ambiente OS.

Esempio 5
Test-Path Alias:\cls
Verifica la presenza dell'Alias cls (Clear-Host) in PowerShell.

Esempio 6
Test-Path -Path C:\Temp -PathType Container
Verifica se l'oggetto indicato da Path è un Container, cioè se può contenere altri oggetti come ad es. una directory che contiene altri file e sottodirectory. In questo specifico caso la directory C:\Temp è di tipo Container pertanto verrà restituito True

Esempio 7
Test-Path -Path C:\Temp -PathType Leaf
il tipo Leaf verifica che l'oggetto indicato dal parametro Path non sia in grado contenere altri oggetti.



venerdì 22 luglio 2016

Outlook: Abilitare la modifica dell'oggetto di un'email ricevuta in Outlook 2016

Alcuni utenti, per esigenze lavorative, possono avere la necessità di modificare l'oggetto di un messaggio ricevuto. A differenza delle versioni precedenti di Outlook nella versione 2016, quando si apre un'email, l'intestazione (contenente mittente, destinatario, oggetto e data/ora di invio del messaggio) viene visualizzata in modalità compatta. In tale modalità non è possibile modificare l'oggetto dell'email. Per farlo è necessario cliccare sull'apposita icona triangolare evidenziata in FIG 1 per espandere l'intestazione come in FIG 2. Non è necessario ripetere l'operazione per ogni messaggio aperto, infatti l'impostazione sarà mantenuta anche per i successivi messaggi.


Outlook 2016, espandere intestazione messaggio
FIG 1 - Outlook 2016, espandere intestazione messaggio
Outlook 2016, Intestazione estesa
FIG 2 - Outlook 2016, Intestazione estesa

Per effettuare tale impostazione tramite il registro di sistema è possibile procedere nel seguente modo:
  • Avviare l'editor del registro di sistema (WIN+R e digitare regedit seguito da invio)
  • Posizionarsi su
    HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\16.0\Outlook\Options\Mail
  • Creare, se non presente, un valore DWORD (32bit), nominarlo MinimalHeaderOn e valorizzarlo a 0

Affinché la modifica effettuata nel registro di sistema diventi effettiva è necessario riavviare Outlook.
Outlook 2016, Registro di sistema - valore MinimalHeaderOn
FIG 3 - Outlook 2016, Registro di sistema - valore MinimalHeaderOn

Modificando l'oggetto di un messaggio la modifica sarà visibile nell'anteprima del messaggio e aprendo l'email ma non nella sezione elenco messaggi dove verrà visualizzato ancora l'oggetto originale. Per visualizzare l'oggetto modificato anche all'interno del pannello contenente l'elenco messaggi è necessario disabilitare, dal menu Visualizza, l'opzione Mostra come conversazioni.
Outlook 2016, disabilitare Mostra come conversazioni dal menu Visualizza
FIG 4 - Outlook 2016, disabilitare Mostra come conversazioni dal menu Visualizza

L'opzione può essere disabilitata anche cliccando, con il tasto destro del mouse, sull'intestazione/colonne della sezione elenco messaggi e deselezionando la relativa voce dal menu contestuale (FIG 5).
Outlook 2016, disabilitare Mostra come conversazioni da elenco messaggi
FIG 5 - Outlook 2016, disabilitare Mostra come conversazioni da elenco messaggi

giovedì 21 luglio 2016

PowerShell: Creare un archivio compresso con Compress-Archive

Nel precedente articolo abbiamo visto come estrarre il contenuto di un archivio compresso tramite l'utilizzo del cmdlet Expand-Archive. PowerShell mette a disposizione dell'utente anche un cmdlet per la creazione di archivi compressi: Compress-Archive.
La sintassi del cmdlet è la seguente:
Compress-Archive [-Path] <String[]> [-DestinationPath] <String> [-CompressionLevel <String> ] [-Update] [-Confirm]
oppure
Compress-Archive [-DestinationPath] <String> -LiteralPath <String[]> [-CompressionLevel <String> ] [-Update] [-Confirm]


Parametri

-DestinationPath
Specifica il percorso del file di output incluso il nome del file .zip. Se il nome del file non termina con l'estensione .zip questa viene aggiunta automaticamente dal cmdlet

-CompressionLevel
Permette di specificare il livello di compressione desiderato. Al parametro è possibile passare uno dei seguenti valori:
Fastest. La compressione richiederà meno tempo ma l'archivio risultante potrebbe essere di grandi dimensioni.
NoCompression. I file vengono aggiunti all'archivio senza subire alcuna compressione.
Optimal. In questo caso la compressione viene applicata in maniera ottimale e i tempi dell'operazione dipenderanno dalla grandezza dei file. Rappresenta il valore di default nel caso in cui il parametro -CompressionLevel non venga specificato.

-Path
Specifica il percorso (o i percorsi) dei file che si intende aggiungere all'archivio compresso. Il parametro consente l'utilizzo di caratteri wildcard. Nel caso in cui fosse necessario indicare più percorsi, basta separarli con una virgola.

-LiteralPath
Specifica il percorso (o i percorsi) dei file che si intende aggiungere all'archivio compresso. A differenza del parametro Path, il valore di LiteralPath è utilizzato esattamente come digitato: non sono supportati caratteri wildcard e i caratteri di escape vanno racchiusi tra apici singoli. Nel caso in cui fosse necessario indicare più percorsi, basta separarli con una virgola.

-Update
Il parametro Update consente di aggiungere ulteriori file ad un archivio compresso. I file con lo stesso nome verranno sovrascritti.

-Confirm
Richiede una conferma prima dell'esecuzione del cmdlet.


Per comprimere il contenuto della cartella c:\temp\data\ in un file Archivio.zip sul desktop dell'utente Virtual:
Compress-Archive -CompressionLevel Optimal -Path C:\temp\Data\ -DestinationPath C:\Users\Virtual\Desktop\Archivio.zip
PowerShell, Compress-Archive
FIG 1 - PowerShell, Compress-Archive


mercoledì 20 luglio 2016

PowerShell: Espandere archivi compressi con Expand-Archive

Tramite il cmdlet Expand-Archive è possibile espandere un archivio compresso in una specifica cartella. La sintassi del comando è
Expand-Archive [-Path] <String> [-DestinationPath] <String> [-Force] [-Confirm]
oppure
Expand-Archive [-DestinationPath] <String> -LiteralPath <String> [-Force] [-Confirm]


Parametri

-DestinationPath
Specifica il percorso della cartella dove si intende salvare i dati estratti dall'archivio compresso.

-Path 
Specifica il percorso e il file .zip da estrarre.

-LiteralPath
Specifica il percorso e il file .zip da estrarre. A differenza del parametro Path, il valore di LiteralPath è utilizzato esattamente come digitato: non sono supportati caratteri wildcard e i caratteri di escape vanno racchiusi tra apici singoli.

-Force
Forza l'estrazione dei file dall'archivio compresso. Se il file è già presente nella destinazione verrà sovrascritto.

-Confirm
Richiede una conferma prima dell'esecuzione del cmdlet.


Per espandere l'archivio "Archivio.zip" presente sul desktop dell'utente Virtual possiamo eseguire tale comando da PowerShell
Expand-Archive -Path C:\Users\Virtual\Desktop\Archivio.zip -DestinationPath C:\temp\Data\ -Force -Verbose
-Force ci consente di sovrascrivere eventuali file già presenti nella destinazione (C:\temp\Data\)
-Verbose visualizza i dettagli dell'operazione (le scritte gialle visibili in FIG 1)


PowerShell, Expand-Archive
FIG 1 - PowerShell, Expand-Archive
Dato che nell'esempio precedente non ci sono caratteri wildcard o caratteri di escape possiamo utilizzare anche il parametro -LiteralPath
Expand-Archive -LiteralPath C:\Users\Virtual\Desktop\Archivio.zip -DestinationPath C:\temp\Data\ -Force -Verbose

martedì 19 luglio 2016

PowerShell: Svuotare il cestino con Clear-RecycleBin

Per svuotare il cestino di Windows tramite PowerShell 5.0 possiamo utilizzare il cmdlet Clear-RecycleBin. Eseguendo il cmdlet senza specificare alcun parametro ci verrà richiesto di confermare l'operazione. Per evitare che venga visualizzata la richiesta di conferma è possibile utilizzare il parametro Confirm così come indicato di seguito
Clear-RecycleBin -Confirm:$false


PowerShell,  svuotare il cestino di Windows con Clear-RecycleBin
FIG 1 - PowerShell,  svuotare il cestino di Windows con Clear-RecycleBin

Altri parametri che è possibile specificare con il cmdlet Clear-RecycleBin sono:

DriveLetter
Il parametro DriveLetter consente di specificare la partizione/disco su cui agire. Ad es. per svuotare il cestino presente sul disco c:\ possiamo eseguire
Clear-RecycleBin -DriveLetter C

Force
Il parametro Force non fa altro che forzare l'esecuzione del comando
Clear-RecycleBin -Force

lunedì 18 luglio 2016

Outlook: Elementi eliminati dalla casella aggiuntiva finiscono nella cartella sbagliata

Quando in Outlook è configurata una casella di posta aggiuntiva (shared mailbox) sulla quale si dispone dei privilegi di eliminazione, può capitare che gli elementi eliminati da tale casella finiscano nella cartella Posta eliminata della propria casella personale.

Per modificare tale comportamento è necessario mettere mano al registro di sistema.
  • Avviare l'editor del registro di sistema (WIN+R e digitare regedit seguito da invio);
  • Posizionarsi su
    HKEY_CURRENT_USER\Software\Microsoft\Office\xx.0\Outlook\Options\General
    dove al posto di xx.0 va specificata la versione di Outlook installata
    14.0 per Outlook 2010
    15.0 per Outlook 2013
    16.0 per Outlook 2016
  • Se non presente, creare un valore DWORD (32 bit) e rinominarlo in DelegateWastebasketStyle
  • Assegnare al valore DWORD appena creato uno dei seguenti valori esadecimali a seconda del comportamento desiderato :
    4 - Per fare in modo che l'elemento cancellato dalla casella aggiuntiva finisca nella cartella Posta eliminata del proprietario della casella.
    8 - Se si desidera che l'elemento cancellato dalla casella aggiuntiva finisca nella cartella Posta eliminata della casella principale di Outlook (generalmente la casella personale).
Registro di sistema, DelegateWastebasketStyle
FIG 1 - Registro di sistema, DelegateWastebasketStyle