martedì 9 agosto 2022

PowerShell: Ottenere un elenco di tutti gli utenti di una specifica UO

Per visualizzare l'elenco di tutti gli utenti appartenenti ad una specifica unità organizzativa è possibile utilizzare un comando PowerShell simile al seguente
Get-ADUser -Filter * -SearchBase 'ou=utenti, ou=Direzione,dc=mycompany, dc=local'
Con questo comando andiamo a visualizzare tutti gli utenti presenti nell'unità organizzativa mycompany.local/Direzione/Utenti.
Elenco utenti appartenenti all'unità organizzativa
FIG 1 - Elenco utenti appartenenti all'unità organizzativa

Possiamo creare un semplice script che esporta l'elenco degli utenti, presenti nell'unità organizzativa specificata, all'interno di un file CSV
 $OUpath = 'ou=utenti, ou=Direzione,dc=mycompany, dc=local'  
 $ExportPath = 'c:\Temp\users_in_ou.csv'  
 Get-ADUser -Filter * -SearchBase $OUpath | Select-object DistinguishedName,Name,UserPrincipalName | Export-Csv -NoType $ExportPath  



lunedì 8 agosto 2022

Windows 11: Spostare la barra delle applicazioni

In Windows 11 non è più possibile spostare la barra delle applicazioni in altre posizioni. Microsoft ha giustificato tale scelta sottolineando che soltanto una sparuta minoranza di utenti sfruttasse tale possibilità.
Per ripristinare la funzionalità è necessario procedere tramite il registro di sistema:
  • Avviare l'editor del registro di sistema (WIN+R e digitare regedit seguito da invio); 
  • Posizionarsi sulla seguente chiave di registro
    HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\StuckRects3
  • Eseguire un doppio click, con il tasto sinistro del mouse, sul valore binario Settings;
  • Selezionare il quinto valore della seconda riga, che per default contiene il valore 03 e modificarlo in 01;
    StruckRects3, Settings
    FIG 1 - StruckRects3, Settings

  • Confermare la modifica cliccando su OK.

A questo punto, per rendere effettiva la modifica, basta disconnettersi/riconnettersi al sistema oppure terminare e riavviare il processo explorer.exe.




domenica 31 luglio 2022

Windows 11: Ripristinare il menu contestuale "completo"

Il menu contestuale presente in Windows 11 viene visualizzato, per default, in forma ridotta. Il menu ridotto contiene solo le funzioni utilizzate più di frequente e non integra nessuna voce aggiuntiva dei software di terze parti (oltre al fatto che non può essere personalizzato facilmente dagli utenti). Secondo Microsoft ciò rende più semplice individuare le funzionalità desiderate evitando di doverle ricercare in un lungo elenco di voci aggiunte dai vari software.
Per visualizzare il menu completo bisogna compiere un ulteriore passaggio, selezionando la voce Mostra altre opzioni oppure tramite la combinazione di tasti SHIFT+F10.

Tramite una semplice modifica al registro di sistema è possibile ripristinare la visualizzazione dei menu contestuali completi:
  • Avviare l'editor del registro di sistema (WIN+R e digitare regedit seguito da invio); 
  • Posizionarsi sulla seguente chiave di registro HKEY_CURRENT_USER\SOFTWARE\CLASSES\CLSID
  • Creare una nuova chiave e rinominarla in {86ca1aa0-34aa-4e8b-a509-50c905bae2a2}
  • All'interno della chiave appena creata, creare una nuova sottochiave (con lo stesso procedimento) e denominarla InprocServer32
  • Posizionarsi sulla nuova chiave, aprire la voce (Predefinito), verificare che il campo Dati valore sia vuoto e confermare cliccando su OK

Dopo aver riavviato il sistema (o terminato e riavviato il processo explorer.exe), i menu contestuali verranno visualizzati in forma completa.

In alternativa la modifica può essere eseguita tramite il prompt dei comandi. Con il comando
reg add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32" /f /ve
Viene creata la chiave per visualizzare i menu contestuali in forma completa. Per ripristinare la modalità di visualizzazione standard di Windows 11 basta eseguire il comando
reg delete "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}" /f





sabato 30 luglio 2022

Linux: Comando timeout

Il comando timeout fa parte del pacchetto GNU core utilities installato in quasi tutte le distribuzioni Linux e può essere utilizzato nel caso in cui si vuole eseguire un comando che non dispone di un'opzione di timeout incorporata.
L'utility a riga di comando timeout, infatti, consente di eseguire un comando specificato e terminarlo, se è ancora in esecuzione, dopo un determinato periodo di tempo. 

Sintassi

timeout [OPZIONI] DURATA COMMANDO [ARG]…

La DURATA può essere specificata con un numero intero positivo o un numero in virgola mobile, seguito da un suffisso opzionale di unità:
s - secondi (default)
m - minuti
h - ore
d - giorni

Se non viene specificata alcuna unità, l'impostazione predefinita è secondi. Se la durata è impostata a zero, il timeout associato è disabilitato.

Utilizzo di timeout

Di seguito viene mostrato, con alcuni semplici esempi, come può essere utilizzato il comando di timeout.

timeout 5 ping 8.8.8.8
Termina il comando ping dopo 5 secondi
Linux, timeout
FIG 1 - Linux, timeout

timeout 1.2m ping 8.8.8.8
Termina il comando ping dopo 1 minuto e 20 secondi

Per eseguire un comando che richiede privilegi elevati basta anteporre sudo al comando timeout.
sudo timeout 1.2m ping 8.8.8.8

Invio di uno specifico segnale

Se non viene specificato alcun segnale, il timeout invia il segnale SIGTERM al comando gestito quando viene raggiunto il limite di tempo. È possibile specificare quale segnale inviare utilizzando l'opzione -s (--signal).
Per visualizzare l'elenco di tutti i segnali disponibili si utilizza il comando
kill -l
kill, elenco segnali disponibili
FIG 2 - kill, elenco segnali disponibili


sudo timeout 1m -s SIGKILL ping 8.8.8.8
sudo timeout 1m -s 9 ping 8.8.8.8
I comandi sopra riportati inviano il segnale SIGKILL per terminare il comando ping dopo un minuto. Il segnale può essere specificato all'interno del comando indicando il nome (SIGKILL) oppure il numero corrispondente (9).

Forzare la chiusura del processo con l'opzione -k

SIGTERM può essere catturato o ignorato da alcuni processi. In queste situazioni, il processo continuerà a funzionare dopo l'invio del segnale di terminazione.
Per assicurarsi che il comando monitorato venga terminato, va utilizzata l'opzione -k (--kill-after) seguita da un periodo di tempo. In questo modo, dopo il raggiungimento del limite di tempo indicato, il comando di timeout invia il segnale SIGKILL al programma gestito che non può essere catturato o ignorato.

Nell'esempio seguente, timeout esegue il comando ping per un minuto e, se non viene terminato, lo termina dopo dieci secondi.
sudo timeout -k 10 1m ping 8.8.8.8

Return code

Il comando timeout restituisce, come codice di ritorno, 124 quando viene raggiunto il limite di tempo, in caso contrario viene restituito il codice di ritorno del comando gestito.

Per visualizzare il return code del comando anche quando viene raggiunto il limite di tempo, si  utilizza l'opzione --preserve-status:
timeout --preserve-status 10 ping 8.8.8.8

Eseguire il comando in primo piano

Per impostazione predefinita, il timeout esegue il comando gestito in background. Per eseguire il comando in primo piano si utilizza l'opzione --foreground:
timeout --foreground 3m ./scriptfile.sh

Questa opzione è utile quando si vuole eseguire un comando interattivo che richiede l'input dell'utente.



venerdì 29 luglio 2022

MS Outlook: Modificare il limite per l'elenco di completamento automatico

Come accennato nell'articolo MS Outlook: Abilitare/Disabilitare il completamento automatico, il numero di elementi contenuti nell'elenco di completamento automatico è limitato.

I limiti per le diverse versioni di Outlook sono i seguenti:
Outlook 2019: 1.000 elementi
Outlook 2016: 1.000 elementi
Outlook 2013: 1.000 elementi
Outlook 2010: 1.000 elementi
Outlook 2007: 2.000 elementi
Outlook 2003: 1.000 elementi

Agendo tramite il registro di sistema è possibile, anche se non consigliabile, modificare tale limite:
  • Chiudere Outlook;
  • Avviare l'editor del registro di sistema (WIN+R e digitare regedit seguito da invio); 
  • Posizionarsi su
    HKEY_CURRENT_USER\Software\Microsoft\Office\<x.x>\Outlook\AutoNameCheck
    dove al posto di <x.x> va specificata la versione di Microsoft Office in uso
    - Outlook 2019 = 16.0
    - Outlook 2016 = 16.0
    - Outlook 2013 = 15.0
    - Outlook 2010 = 14.0
    - Outlook 2007 = 12.0
    - Outlook 2003 = 11.0 
    Se la chiave AutoNameCheck non è presente, crearla manualmente e selezionarla
  • Creare, se non presente, un nuovo valore DWORD (32 bit) con nome MaxNickNames
  • Assegnare a MaxNickNames il valore, in formato decimale, desiderato (ad es. inserire 1200, in formato decimale, per portare il limite a 1200 elementi).
    Regedit, MaxNickNames
    FIG 1 - Regedit, MaxNickNames

  • Avviare Outlook.

MaxNickNames può essere utilizzato anche per ridurre il numero di elementi memorizzato dal completamento automatico specificando un valore inferiore.





giovedì 21 luglio 2022

MS Outlook: Abilitare/Disabilitare il completamento automatico

La funzionalità di completamento automatico, fornita dal client di posta MS Outlook, viene utilizzata sia per il controllo automatico dei nomi sia per il completamento automatico del nome durante la digitazione. L'elenco viene aggiornato automaticamente quando si inviano messaggi e-mail da Outlook ed è composto da indirizzi SMTP, voci LegacyExchangeDN e nomi visualizzati per gli utenti a cui sono stati precedentemente inviati messaggi e-mail. L'elenco di completamento automatico di Outlook non è in condivisione con Outlook Web App (OWA): OWA gestisce un proprio elenco di completamento automatico.

Il numero massimo di elementi presenti all'interno del completamento automatico è limitato:
Outlook 2019: 1.000 elementi
Outlook 2016: 1.000 elementi
Outlook 2013: 1.000 elementi
Outlook 2010: 1.000 elementi
Outlook 2007: 2.000 elementi
Outlook 2003: 1.000 elementi

Una volta raggiunto il limite, Outlook utilizza un algoritmo interno basato sul coefficiente di utilizzo per stabilire quali elementi rimuovere dall'elenco.

Abilitare/Disabilitare il completamento automatico da GUI

  • Dal menu File di Outlook cliccare su Opzioni;
  • Nella finestra Opzioni Outlook selezionare la scheda Posta (sul lato sinistro della finestra);
  • Scorrere l'elenco delle impostazioni fino alla sezione Invio messaggi;
  • Selezionare/deselezionare la casella "All'immissione di testo nelle righe A, Cc e Ccn, usa l'elenco di completamento automatico per suggerire i nomi" per abilitare/disabilitare la funzionalità di completamento automatico.
    MS Outlook, Completamento automatico
    FIG 1 - MS Outlook, Completamento automatico

Abilitare/Disabilitare il completamento automatico tramite 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\16.0\Outlook\Preferences
  • Creare, se non presente, un nuovo valore DWORD (32 bit) con nome ShowAutoSug;
  • Assegnare a ShowAutoSug il valore 0 per disattivare il completamento automatico oppure 1 per attivarlo.
    Regedit, ShowAutoSug
    FIG 2 - Regedit, ShowAutoSug

  • Riavviare Outlook.

Di seguito è possibile scaricare i file .reg per Abilitare/Disabilitare il completamento automatico di Outlook




mercoledì 20 luglio 2022

MS Exchange: Visualizzare informazioni sulle Public Folders con Get-PublicFolder

Per recuperare gli attributi di una cartella pubblica o di un insieme di cartelle pubbliche è possibile utilizzare il cmdlet Get-PublicFolder, disponibile sia in Exchange on-premises che Exchange on-cloud (alcuni parametri e impostazioni possono essere esclusivi di un ambiente o dell'altro).

Sintassi

Get-PublicFolder
   [[-Identity] <PublicFolderIdParameter>]
   [-GetChildren]
   [-DomainController <Fqdn>]
   [-Mailbox <MailboxIdParameter>]
   [-Organization <OrganizationIdParameter>]
   [-ResidentFolders]
   [-ResultSize <Unlimited>]
   [-Server <ServerIdParameter>]
   [<CommonParameters>]

Get-PublicFolder
   [[-Identity] <PublicFolderIdParameter>]
   [-Recurse]
   [-DomainController <Fqdn>]
   [-Mailbox <MailboxIdParameter>]
   [-Organization <OrganizationIdParameter>]
   [-ResidentFolders]
   [-ResultSize <Unlimited>]
   [-Server <ServerIdParameter>]
   [<CommonParameters>]

Get-PublicFolder
   [-LostAndFound]
   [-DomainController <Fqdn>]
   [-Mailbox <MailboxIdParameter>]
   [-Organization <OrganizationIdParameter>]
   [-ResidentFolders]
   [-ResultSize <Unlimited>]
   [<CommonParameters>]

Get-PublicFolder
   [[-Identity] <PublicFolderIdParameter>]
   [-DomainController <Fqdn>]
   [-Mailbox <MailboxIdParameter>]
   [-Organization <OrganizationIdParameter>]
   [-ResidentFolders]
   [-Server <ServerIdParameter>]
   [<CommonParameters>]   

Parametri

-DomainController
Questo parametro è disponibile solo in Exchange on-premises.
Il parametro DomainController specifica il controller di dominio utilizzato da questo cmdlet per leggere dati da o scrivere dati su Active Directory. Il controller di dominio viene identificato con il suo Fully Qualified Domain Name (FQDN). Ad esempio, dc01.contoso.com.

-GetChildren
L'opzione GetChildren specifica se restituire solo i figli della cartella specificata dal parametro Identity. Non è necessario specificare un valore con questo parametro e non è possibile utilizzarlo con i parametri Recurse o LostAndFound.

-Identity
Il parametro Identity specifica il nome e il percorso della cartella pubblica che si desidera visualizzare. Un valore valido utilizza la sintassi: \Livello1\Livello2\...\LivelloN\PublicFolder. Ad esempio, "\Clienti Italia" o "\Clienti\Clienti Italia".

-LostAndFound
Permette di specificare se restituire solo le cartelle orfane che si trovano in \NON_IPM_SUBTREE\LOST_AND_FOUND. Non è necessario passare un valore a questo parametro
La cartella LOST_AND_FOUND contiene le cartelle mancanti che vengono ricreate dal processo di riconciliazione della gerarchia delle cartelle pubbliche quando la cartella esiste in una mailbox cartelle pubbliche secondaria, ma non in quella primaria.

Non è possibile utilizzare questo parametro insieme a -Identity o -Recurse.

-Mailbox
Il parametro Mailbox specifica l'identità della mailbox cartella pubblica gerarchica. È possibile utilizzare qualsiasi valore che identifichi in modo univoco la mailbox. Ad esempio:
  • Name
  • Alias
  • Distinguished name (DN)
  • Canonical DN
  • Domain\Username
  • Email address
  • GUID
  • LegacyExchangeDN
  • SamAccountName
  • User ID or user principal name (UPN)

-Organization
Questo parametro è disponibile solo in Exchange on-premises ed è riservato all'uso interno di Microsoft.

-Recurse
L'opzione Recurse specifica se restituire la cartella pubblica specificata e tutti i suoi figli. Non è possibile utilizzare questo parametro insieme a -GetChildren o -LostAndFound.

-ResidentFolders
Specifica se restituire le cartelle pubbliche che risiedono in una determinata mailbox delle cartelle pubbliche di contenuto. Se non si utilizza questo parametro, il comando restituirà solo le cartelle pubbliche il cui contenuto risiede nella mailbox delle cartelle pubbliche della gerarchia primaria.

-ResultSize
Il parametro ResultSize specifica il numero massimo di risultati da restituire. Il massimo predefinito è 10.000. Per non avere limiti ai risultati restituiti, impostare questo parametro su Unlimited. Questo parametro può essere passato solo in combinazione con i parametri -Recurse o -GetChildren.

-Server
Questo parametro è disponibile solo in Exchange Server 2010.

Il parametro Server filtra i risultati in base al server Exchange specificato. È possibile utilizzare qualsiasi valore che identifichi univocamente il server. Ad esempio:
  • Name
  • FQDN
  • Distinguished name (DN)
  • Exchange Legacy DN


Esempi

Esempio 1
Get-PublicFolder
Questo esempio utilizza il comando Get-PublicFolder senza parametri per restituire l'oggetto cartella pubblica principale (IPM_SUBTREE).

Esempio 2
Get-PublicFolder -Identity \NON_IPM_SUBTREE -Recurse | Format-List Name
Questo esempio restituisce i nomi di tutte le cartelle di sistema (che non sono mostrate per impostazione predefinita), a partire dalla radice della cartella di sistema (\NON_IPM_SUBTREE).

Esempio 3
Get-PublicFolder -Identity "\Ufficio1\Documenti" -Recurse -ResultSize Unlimited
Questo esempio restituisce la cartella pubblica "Documenti" da "\Ufficio1\" e tutte le sotto cartelle, senza limiti di numero.

Esempio 4
Get-PublicFolder -Mailbox "Ufficio" -ResidentFolders
Questo esempio restituisce le cartelle pubbliche che risiedono nella casella di posta elettronica specificata

Esempio 5
Get-PublicFolder -Recurse -ResultSize Unlimited | Select Identity, Name |Export-CSV C:\Temp\ElencoPB.txt -encoding "Unicode" -notypeinformation
Restituisce l'elenco delle cartelle (nome e percorso) contenute nelle cartelle pubbliche e lo esporta all'interno del file specificato.