giovedì 12 maggio 2022

PowerShell: Visualizzare informazioni sui volumi protetti da BitLocker

BitLocker è una funzionalità di protezione dei dati integrata nei sistemi operativi Microsoft, a partire da Windows Vista Enterprise e successivi, che permette di crittografare interi volumi. Per impostazione di default viene usato l'algoritmo di crittografia AES nella modalità CBC con una chiave di 128 bit. Windows viene fornito con il modulo PowerShell "Bitlocker" che permette la gestione della crittografia dei dischi. Per visualizzare l'elenco completo dei cmdlet che fanno parte di tale modulo, basta eseguire il seguente comando in una finestra PowerShell
Get-Command -Module BitLocker
PowerShell, Modulo BitLocker
FIG 1 - PowerShell, Modulo BitLocker

Per visualizzare le informazioni sui volumi protetti e proteggibili da BitLocker Drive Encryption si ricorre al cmdlet Get-BitLockerVolume

Sintassi

Get-BitLockerVolume
   [[-MountPoint] <String[]>]
   [<CommonParameters>]
   

Parametri

- MountPoint
Permette di specificare la lettera dell'unità (o un array di lettere di unità) da cui ottenere le informazioni sullo stato BitLocker.


Esempi


Esempio 1
Get-BitLockerVolume | Select-Object -Property *
Visualizza le informazioni di tutti i volumi presenti nel sistema. Tra le informazioni visualizzate troviamo:
  • ComputerName: Nome del computer.
  • MountPoint: Lettera di unità.
  • EncryptionMethod: Indica l'algoritmo di crittografia e la dimensione della chiave utilizzati sul volume.
  • AutoUnlockEnabled: Indica se BitLocker utilizza lo sblocco automatico per il volume.
  • MetadataVersion: Restituisce la versione dei metadati FVE del volume.
    0 - Unknown. Il sistema operativo è sconosciuto;
    1 - Vista. Formato Windows Vista, significa che il volume è stato protetto con BitLocker su un computer con Windows Vista.
    2 - Win7. Formato Windows 7, il che significa che il volume è stato protetto con BitLocker su un computer con Windows 7 o il formato dei metadati è stato aggiornato utilizzando il metodo UpgradeVolume.
  • VolumeStatus: Se BitLocker attualmente protegge alcuni, tutti o nessuno dei dati sul volume.
  • ProtectionStatus: Stato delle protezione BitLocker.
  • LockStatus: Stato di blocco.
  • EncryptionPercentage: Percentuale del volume protetto da BitLocker. Se BitLocker utilizza attualmente un protettore di chiavi per crittografare la chiave di crittografia del volume.
  • VolumeType: Dati o sistema operativo.
  • CapacityGB: Dimensione dell'unità.
  • KeyProtector: Tipo di protettore o protettori di chiavi.
Get-BitLockerVolume
FIG 2 - Get-BitLockerVolume

Esempio 2
Get-BitLockerVolume -MountPoint "C:" | Format-List
Visualizza  tutte le informazioni BitLocker relative al volume specificato.

Esempio 3
BitLockerVolume -MountPoint "C:"
Visualizza le informazioni BitLocker principali relative al volume specificato

BitLockerVolume -MountPoint
FIG 3 - BitLockerVolume -MountPoint






mercoledì 11 maggio 2022

Windows 10: Ripristinare l'opzione "Apri con" nel menu contestuale

La funzione "Apri con" all'interno del menu contestuale viene spesso utilizzata per aprire un file con un determinato programma (diverso da quello predefinito) o per impostare una nuova app predefinita per quel tipo di file. La procedura consiste nel cliccare, con il tasto destro del mouse, sul file per poi andare sull'opzione "Apri con" e selezionare uno dei programmi dalla lista oppure cliccare su "Scegli un'altra app" per selezionare manualmente un'app non presente in elenco.
Può capitare che la voce "Apri con" non appaia all'interno del menu contestuale. In questo caso, per ripristinarla, basta intervenire all'interno del registro di sistema:
  • Premere la combinazione di tasti WIN+per aprire la finestra di dialogo Esegui e digitare regedit seguito da invio per avviare l'Editor del Registro di sistema;
  • Posizionarsi su
    HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers\Open With se la chiave non è presente, crearla manualmente
  • Modificare il valore stringa "Predefinito" inserendo nel campo Dati valore la seguente stringa e cliccare su OK
    {09799AFB-AD67-11d1-ABCD-00C04FC30936}
    Ripristinare Apri con nel menu contestuale
    FIG 1 - Ripristinare Apri con nel menu contestuale

L'opzione "Apri con" nel menu contestuale dovrebbe essere disponibile immediatamente. In caso contrario, riavviare il processo explorer.exe o disconnettersi e riconnettersi al sistema.

Per chi non volesse mettere le mani all'interno del registro di sistema, dal seguente link è possibile scaricare il file .reg per ripristinare l'opzione "Apri con" all'interno del menu contestuale.






sabato 30 aprile 2022

PowerShell: Identificazione del dominio connesso

Un modo rapido per determinare il nome del dominio a cui è connesso il sistema è WMI. Dalla finestra PowerShell eseguire:
Get-CimInstance -ClassName Win32_NTDomain

Il comando visualizza il nome del dominio a cui il sistema è connesso, il DNS Forest Name e il nome del Domain Controller. Se il sistema non è connesso ad un dominio, il risultato sarà un oggetto vuoto.
Identificazione del dominio connesso
FIG 1 - Identificazione del dominio connesso






venerdì 29 aprile 2022

PowerShell: Estrarre l'icona da un file eseguibile

Quasi la totalità dei file eseguibili contiene al suo interno un'icona che lo contraddistingue dagli altri file. Tramite PowerShell è possibile estrarre l'icona presente all'interno di un file eseguibile e salvarla in un file con estensione .ico. Per eseguire tale operazione bastano poche righe di codice:

 # Specifica la cartella dove verrà salvato il file .ico  
 $dest = "c:\Temp"  
   
 # Crea la cartella se non presente  
 mkdir $dest -ErrorAction Ignore  
   
 # Carica la classe di .NET Framework: System.Drawing   
 Add-Type -AssemblyName System.Drawing  
   
 # Estrae l'icona di regedit.exe  
 $fileExe = "$env:windir\regedit.exe"  
 $fileIco = "$dest\regedit.ico"  
 [System.Drawing.Icon]::ExtractAssociatedIcon($fileExe).ToBitmap().Save($fileIco)  
   
 # Visualizza in Esplora file la cartella contenente l'icona estratta  
 explorer $dest   

Per estrarre l'icona da un file viene utilizzata la classe .NET Framework System DrawingIl codice sopra riportato è molto semplice e i commenti aiutano a capire il suo funzionamento.





giovedì 28 aprile 2022

PowerShell: Download di file da Internet

Nell'articolo PowerShell: Visualizzare l'intestazione HTTP di un sito web è stato mostrato come, utilizzando il cmdlet Invoke-WebRequest, recuperare le informazioni contenute all'interno dell'intestazione HTTP di un sito web. 
Invoke-WebRequest, oltre a consentire di inviare richieste a servizi web, può essere utilizzato anche per comunicare con sistemi remoti e per il trasferimento di dati. Le istruzioni mostrate di seguito utilizzano il cmdlet Invoke-WebRequest per per scaricare un file da Internet (in questo caso si tratta di un'immagine) in un modo molto semplice:
 $url = 'https://images-assets.nasa.gov/image/iss066e174306/iss066e174306~orig.jpg'  
 $dest= "c:\temp\picture_iss.jpg"  
   
 Invoke-WebRequest -UseBasicParsing -Uri $url -OutFile $dest   
   
 Invoke-Item -Path $dest  

Le prime due righe permettono di specificare il percorso del file da scaricare (variabile $url) e il percorso dove salvarlo (variabile $dest).
Nella riga successiva viene eseguito il cmdlet Invoke-Webrequest a cui vengono passate le variabili $url e $dest inizializzate precedentemente. Il parametro -UseBasicParsing impedisce al cmdlet di usare il vecchio e deprecato modello di oggetto "Internet Explorer" che può causare problemi. Prima di utilizzare il codice sopra riportato è bene ricordare che Invoke-WebRequest potrebbe non funzionare con i vecchi protocolli di rete e TLS.

L'ultima riga non fa altro che aprire l'immagine scaricata con il visualizzatore predefinito.





mercoledì 27 aprile 2022

Windows: Ripristinare i criteri di Windows Firewall

Per resettare i criteri di Windows Firewall reimpostando i valori predefiniti è possibile utilizzare netsh advfirewall. Avviare il Prompt dei comandi come amministratore ed eseguire il comando
netsh advfirewall reset  
Reset policy Windows Firewall
FIG 1 - Reset policy Windows Firewall

Per eseguire il backup dei criteri correnti prima di ripristinare quelli predefiniti si utilizza il parametro export a cui va passato il nome del file in cui si intendono salvare i criteri
netsh advfirewall export "C:\BackupPolicyFirewall.wfw"

Per importare i criteri salvati da un file si utilizza il comando
netsh advfirewall import "C:\BackupPolicyFirewall.wfw"




martedì 26 aprile 2022

PowerShell: Attivare/Disattivare la funzione Posta in arrivo Evidenziata di Outlook

La funzione Posta in arrivo Evidenziata di Outlook separa la posta in arrivo in due schede: Evidenziata, contenente le email considerate più importanti, ed Altra contenente le restanti email. Non sempre questa separazione funziona correttamente e potremmo ritrovarci con email importanti spostate nella scheda Altra.

In MS Outlook per Windows, Posta in arrivo Evidenziata è disponibile solo per gli account Microsoft 365, Exchange e Outlook.com. La funzione può essere attivata/disattivata in maniera molto semplice da Outlook selezionando la cartella Posta in arrivo e cliccando sull'apposito pulsante presente nel menu Visualizza.
Posta in arrivo Evidenziata
FIG 1 - Posta in arrivo Evidenziata


L'attivazione/disattivazione di tale funzionalità in Outlook viene controllata dal valore 000b04a5 presente nel registro di sistema all'interno di una delle sotto-chiavi del profilo di posta. Il nome della sotto-chiave di registro contenente tale valore, per questioni di sicurezza, varia e va ricercata all'interno della chiave
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\16.0\Outlook\Profiles\<nome_profilo_Outlook>

L'operazione può essere automatizzata con il seguente script PowerShell. Lo script va a cercare il valore 000b04a5 all'interno del profilo Outlook predefinito e chiede all'utente se disattivare/attivare la funzione. I commenti aiutano nella comprensione del codice.
 # Percorso chiavi di registro e profili relativi ad Outlook   
  $outlook = "HKCU:\Software\Microsoft\Office\16.0\Outlook"   
  # Variabili contenenti i valori binari per l'attivazione/disattivazione della funzione Posta Evidenziata   
  $Enable=([byte[]](0x01,0x00))   
  $Disable=([byte[]](0x00,0x00))   
  # Verifico il profilo outlook predefinito   
  # Verifico se è presente il valore stringa DefaulProfile   
  if ((Get-ItemProperty -Path $outlook -Name "DefaultProfile" -ErrorAction SilentlyContinue)){   
    # Recupero il valore contenuto in DefaultProfile   
    $defaultProfile = (Get-ItemProperty -Path $outlook -Name "DefaultProfile").'DefaultProfile'   
    # Se DefaulProfile è vuoto allora non è specificato un profilo outlook predefinito   
    if ($defaultProfile -ne ""){   
         $CurrentProfile = "$Outlook" + '\Profiles\'+ "$defaultProfile" + '\*'   
         # All'interno del profilo outlook predefinito ricerco il valore 000b04a5   
         $FocusValue = (Get-ItemProperty -Path $CurrentProfile -Name "000b04a5" -ErrorAction SilentlyContinue).'000b04a5'   
         # Se il valore è 1 allora la funzione Posta Evidenziata è attiva   
         If ($FocusValue -eq "1"){   
          write-host "La funzione 'Mostra posta in arrivo evidenziata' risulta attiva"   
          # Chiedo all'utente se desidera disattivare la funzione Posta Evidenziata   
          $confirmation = Read-Host "Si desidera disattivarla?[S/N]"   
          # Se l'utente risponde in maniera affermativa, la funzione viene disattivata   
          if ($confirmation -eq 's') {   
            Set-ItemProperty -Path $CurrentProfile -Name "000b04a5" -Value $Disable -ErrorAction SilentlyContinue   
            write-host "La funzione 'Mostra posta in arrivo evidenziata' e' stata disattivata"   
          }    
         }   
         else{   
          # La funzione Posta Evidenziata è disattivata   
          write-host "La funzione 'Mostra posta in arrivo evidenziata' non risulta attiva"   
          # Chiedo all'utente se desidera attivare la funzione Posta Evidenziata   
          $confirmation = Read-Host "Si desidera attivarla?[S/N]"   
          # Se l'utente risponde in maniera affermativa, la funzione viene attivata   
            if ($confirmation -eq 's') {   
            Set-ItemProperty -Path $CurrentProfile -Name "000b04a5" -Value $Enable -ErrorAction SilentlyContinue   
            write-host "La funzione 'Mostra posta in arrivo evidenziata' e' stata attivata"   
          }   
     
         }   
    }   
    # Il valore stringa DefaulProfile è vuoto   
    else{   
       write-host "Non risulta impostato alcun profilo Outlook predefinito"   
    }   
  }   
  # Il valore stringa DefaulProfile non è presente   
  else{   
    write-host "Il valore DefaulProfile non risulta presente."   
  }   

Dal seguente link è possibile scaricare lo script PowerShell