mercoledì 27 luglio 2016

PowerShell: Visualizzare le informazioni sulla scheda audio utilizzando Get-Wmiobject

Windows Management Instrumentation (WMI) è una tecnologia integrata in tutti i sistemi operativi Microsoft, a partire da Windows ME, fondamentale per l'amministrazione dei sistemi Windows (sia in locale che da remoto). WMI consente di visualizzare e gestire un'ampia gamma di informazioni in maniera uniforme. Per accedere alle potenzialità di tale tecnologia tramite PowerShell è necessario utilizzare il cmdlet Get-WmiObject. La tecnologia WMI fa uso di classi per descrivere le risorse che possono essere gestite. Il primo problema da affrontare è proprio quello di conoscere cosa si può fare con WMI e quali sono le classi utilizzate:  sono disponibili centinaia di classi WMI ciascuna delle quali contiene decine di proprietà relative ad una specifica risorsa. Per visualizzare l'elenco delle classi WMI in PowerShell è possibile utilizzare il seguente comando
Get-WmiObject -List

Per visualizzare le informazioni sulla scheda audio installata nel sistema utilizzeremo la classe Win32_SoundDevice con il seguente comando
Get-WmiObject -Class "Win32_SoundDevice" | Fl * -Force



Get-WmiObject proprietà scheda audio
FIG 1 - Get-WmiObject proprietà scheda audio

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