Visualizzazione post con etichetta Powershell. Mostra tutti i post
Visualizzazione post con etichetta Powershell. Mostra tutti i post

mercoledì 25 giugno 2025

Windows: Elencare i programmi installati

Spesso ci si trova nella necessità di sapere con precisione quali software siano installati sul proprio sistema Windows: che sia per manutenzione, migrazione dati o semplice curiosità, avere un elenco completo può rivelarsi estremamente utile. Fortunatamente, Windows mette a disposizione un comando potente e poco conosciuto: WMIC (Windows Management Instrumentation Command-line).

Con un semplice comando da terminale, è possibile ottenere l’elenco di tutti i programmi installati. Per visualizzarli direttamente a schermo, è sufficiente aprire il Prompt dei comandi (cmd) e digitare:
wmic product get name

Il sistema restituirà una lista completa dei software presenti sul computer.

Se invece si desidera esportare l'elenco in un file CSV, utile per archiviarlo, condividerlo o elaborarlo successivamente con Excel o un editor di testo, si può utilizzare il comando:
wmic /output:C:\SWInstallati.csv product get name,version /format:csv

WMIC, Elenco dei software installati
FIG 1 - WMIC, Elenco dei software installati


Per ottenere maggiori informazioni su ciacun software installato utilizzare il comando
wmic /output:C:\SWInstallati.csv product get /format:csv

Questo comando creerà un file chiamato SWInstallati.csv nella directory radice del disco C:, contenente il nome e la versione di ciascun programma installato. Importando il file CSV in un foglio di calcolo come Excel, verranno visualizzati i dettagli di ciascun software installato come mostrato in FIG 2.
File CSV
FIG 2 - File CSV



Visualizzare l'elenco dei programmi installati tramite PowerShell

Va detto che WMIC è uno strumento ormai deprecato nelle versioni più recenti di Windows. In alternativa, è possibile utilizzare PowerShell con questo comando:

Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion | Format-Table -AutoSize
PowerShell, Elenco dei software installati.png
FIG 3 - PowerShell, Elenco dei software installati.png


Oppure, per esportare l’elenco in un file:

Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion | Export-Csv C:\SWInstallati.csv -NoTypeInformation

Come visto per WMIC per visualizzare più informazioni per ciascun software è possibile utilizzare il comando
Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Export-Csv C:\SWInstallati.csv -NoTypeInformation






mercoledì 10 aprile 2024

Windows Server 2022: Impostare la complessità della password tramite Password Settings Object

All'interno di un dominio è sempre consigliabile stabilire una policy aziendale per forzare l'utilizzo di password complesse al fine di prevenire (o quantomeno rendere difficili) accessi non autorizzati.
Già a partire da Windows Server 2012 è possibile controllare la complessità delle password attraverso l'utilizzo dei criteri granulari per le password (FINE-GRAINED password policy) e la creazione di Password Settings Object (PSO). I requisiti minimi per procedere sono i seguenti:
  • Sia presente almeno un Domain Controller con Windows Server 2012 o superiore;
  • Il livello di funzionalità della foresta sia impostata almeno su Windows Server 2008.
In questi articoli stiamo utilizzando Windows Server 2022 con il livello di funzionalità della foresta di Windows Server 2016 pertanto i requisiti sono ampiamente rispettati. Solo i membri del gruppo Domain Admin possono creare PSO.


Creazione di Password Settings Object (PSO) tramite il Centro di amministrazione di Active Directory

Da Server Manager cliccare sul menu Strumenti e selezionare Centro di amministrazione di Active Directory. In alternativa premere la combinazione di tasti WIN+R, digitare dsac.exe e premere invio.
Server Manager
FIG 1 - Server Manager

Selezionare il proprio dominio (nel nostro caso mycompany.local) quindi aprire il container System con un doppio click.
Centro di amministrazione di Active Directory, container System
FIG 2 - Centro di amministrazione di Active Directory, container System

Cliccare due volte su Password Settings container.
Centro di amministrazione di Active Directory, Password Settings Container
FIG 3 - Centro di amministrazione di Active Directory, Password Settings Container

Sul pannello Attività (sul lato destro della finestra) cliccare su Nuovo quindi Impostazioni password.
Impostazioni password
FIG 4 - Impostazioni password

Nella finestra Crea Impostazioni password ci sono diverse opzioni da settare per la creazione del PSO.
  • All'interno della casella Nome specificare il nome da assegnare all'oggetto. E' consigliabile utilizzare un nome significativo che consenta di capire il suo scopo. Ad es. dovendo creare un PSO per gli amministratori di dominio un nome significativo potrebbe essere PSO_Domain_Admin.
  • All'interno del campo Precedenza inserire il valore 1. Il valore di tale campo ci permette di specificare la precedenza dell'oggetto: nel caso in cui su un account utente o su un gruppo siano definite più PSO, quello con il valore più basso avrà la precedenza.
  • Il campo Lunghezza minima password consente di specificare il numero minimo di caratteri da utilizzare per la password. Impostare tale campo a 12 caratteri.
  • Imponi cronologia delle password. Tale campo, se selezionato, permette di impedire che l'utente riutilizzi una password già utilizzata in precedenza. Il valore di default di tale campo è 24 il che comporta che l'utente può reinserire una password già utilizzata in passato solo dopo 24 cambi password. Lasciare l'opzione attiva con il valore di default.
  • Imponi validità minima password. Permette di specificare dopo quanto tempo dal cambio password l'utente potrà nuovamente modificarla. Il valore di default è 1 quindi quando l'utente cambia la password dovrà aspettare il giorno successivo (24h) per poterla cambiare nuovamente.
  • Imponi validità massima password. Il valore di default è 42. Modificare tale valore in 30. Il campo permette di specificare dopo quanti giorni l'utente è obbligato a cambiare password.
  • Attivare l'opzione Applica criteri di blocco account. Nel campo Numero di tentativi di accesso non riusciti consentiti inserire 5. Nel campo Ripristina conteggio tentativi di accesso non riusciti lasciare il valore 30. Lasciare attiva l'opzione Per un periodo di tempo pari a (minuti) valorizzata a 30. Con tali opzioni, dopo 5 tentativi di accesso non riusciti, l'account verrà bloccato per 30 minuti. Il contatore degli accessi non riusciti verrà resettato dopo 30 accessi riusciti consecutivi.
Cliccare su OK per completare la creazione del PSO con le impostazioni settate.
Creazione PSO
FIG 5 - Creazione PSO


Creazione di Password Settings Object (PSO) tramite PowerShell

Per eseguire la stessa operazione tramite PowerShell è necessario utilizzare il cmdlet New-ADFineGrainedPasswordPolicy.

Sintassi
New-ADFineGrainedPasswordPolicy
   [-WhatIf]
   [-Confirm]
   [-AuthType <ADAuthType>]
   [-ComplexityEnabled <Boolean>]
   [-Credential <PSCredential>]
   [-Description <String>]
   [-DisplayName <String>]
   [-Instance <ADFineGrainedPasswordPolicy>]
   [-LockoutDuration <TimeSpan>]
   [-LockoutObservationWindow <TimeSpan>]
   [-LockoutThreshold <Int32>]
   [-MaxPasswordAge <TimeSpan>]
   [-MinPasswordAge <TimeSpan>]
   [-MinPasswordLength <Int32>]
   [-Name] <String>
   [-OtherAttributes <Hashtable>]
   [-PassThru]
   [-PasswordHistoryCount <Int32>]
   [-Precedence] <Int32>
   [-ProtectedFromAccidentalDeletion <Boolean>]
   [-ReversibleEncryptionEnabled <Boolean>]
   [-Server <String>]
   [<CommonParameters>]
   
Parametri
-AuthType 
Specifica il metodo di autenticazione. I valori accettati dal parametro sono:
  • Negotiate oppure 0 (default)
  • Basic oppure 1

-ComplexityEnabled
Specifica se la complessità della password è abilitata per il criterio della password. Se abilitata, la password deve contenere tre dei seguenti quattro tipi di caratteri:
  • Caratteri maiuscoli (A, B, C, D, E, ...)
  • Caratteri minuscoli (a, b, c, d, e, ...)
  • Numeri (0, 1, 2, 3, ...)
  • Caratteri speciali (#, $, *, %, ...)
I valori accettati per questo parametro sono:
  • $False o 0. Disabilita la complessità della password.
  • $True o 1. Abilita la complessità della password.


-Confirm
Se specificato, tale parametro mostra la richiesta di conferma prima di eseguire il cmdlet.


-Credential
Specifica un'account utente che ha i permessi necessari per eseguire l'operazione. Se omesso viene considerato l'utente corrente che sta eseguendo il comando. Al parametro può essere passato il nome dell'account, come ad es. "utente01" o "Dominio\utente01" oppure può essere passato un'oggetto PSCredential generato dal cmdlet Get-Credential. Se viene specificato un'account utente verrà richiesto di inserire la password all'esecuzione del comando.


-Description
Specifica una descrizione dell'oggetto. Tale parametro imposta il valore della proprietà Description dell'oggetto.


-DisplayName
Specifica il display name dell'oggetto: imposta la proprietà DisplayName dell'oggetto.


-Instance
Specifica un'istanza di un oggetto fine-grained password policy da usare come modello per un nuovo oggetto fine-grained password policy.

È possibile utilizzare un'istanza di un oggetto fine-grained password policy esistente come modello o costruire un nuovo oggetto fine-grained password policy utilizzando la riga di comando di Windows PowerShell o uno script.

Metodo 1: utilizzare un oggetto fine-grained password policy esistente come modello per un nuovo oggetto. Per recuperare un'istanza di un oggetto fine-grained password policy esistente, utilizzare un cmdlet come Get-ADFineGrainedPasswordPolicy. Quindi fornire questo oggetto al parametro Instance del cmdlet New-ADFineGrainedPasswordPolicy. È possibile sovrascrivere i valori delle proprietà del nuovo oggetto impostando i parametri appropriati.

Metodo 2: creare un nuovo oggetto ADFineGrainedPasswordPolicy e impostare i valori delle proprietà utilizzando l'interfaccia della riga di comando di Windows PowerShell. Passare quindi questo oggetto al parametro Instance del cmdlet New-ADFineGrainedPasswordPolicy per creare il nuovo oggetto Active Directory fine-grained password policy.


-LockoutDuration
Specifica il periodo di tempo in cui un account viene bloccato dopo che il numero di tentativi di accesso falliti supera la soglia di blocco. Non è possibile accedere a un account bloccato finché il periodo di tempo di durata del blocco non è scaduto. Se si imposta il valore a 0, l'account deve essere sbloccato manualmente dall'amministratore. Questo parametro imposta la proprietà lockoutDuration di un oggetto criterio password. Il nome di visualizzazione LDAP (ldapDisplayName) di questa proprietà è msDS-LockoutDuration.

La durata del blocco deve essere maggiore o uguale al tempo di osservazione del blocco per un criterio di password. Utilizzare il parametro LockOutObservationWindow per impostare il tempo di osservazione del blocco.

Specificare l'intervallo di tempo della durata del blocco nel formato seguente:
D.H:M:S.F

dove:
D = Giorni (da 0 a 10675199)
H = Ore (da 0 a 23)
M = Minuti  (da 0 a 59)
S = Secondi (da 0 a 59)
F = Frazioni di secondo (da 0 a 9999999)


-LockoutObservationWindow
Specifica l'intervallo di tempo massimo tra due tentativi di accesso non riusciti prima che il numero di tentativi di accesso non riusciti venga riportato a 0. Un account viene bloccato quando il numero di tentativi di accesso non riusciti supera la soglia di blocco del criterio della password. Questo parametro imposta la proprietà lockoutObservationWindow di un oggetto criterio password. Il nome di visualizzazione LDAP (ldapDisplayName) di questa proprietà è msDS-lockoutObservationWindow.

La finestra di osservazione del blocco deve essere minore o uguale alla durata del blocco di un criterio di password. Utilizzare il parametro LockoutDuration per impostare la durata del blocco.

Specificare l'intervallo di tempo nel formato seguente:
D:H:M:S.F

dove:
D = Giorni (da 0 a 10675199)
H = Ore (da 0 a 23)
M = Minuti (da 0 a 59)
S = Secondi (da 0 a 59)
F = Frazioni di secondo (da 0 a 9999999)

Nota: I valori possono essere compresi tra 0:0:0:0.0 e 10675199:02:48:05.4775807.


-LockoutThreshold
Specifica il numero di tentativi di accesso non riusciti consentiti prima che un account venga bloccato. Questo numero aumenta quando l'intervallo tra i tentativi di accesso non riusciti è inferiore al tempo specificato da LockoutObservationWindow. Questo parametro imposta la proprietà LockoutThreshold di un criterio di password.

-MaxPasswordAge
Specifica il periodo di tempo massimo in cui è possibile mantenere la stessa password. Dopo questo periodo di tempo, la password scade e bisogna crearne una nuova.
Questo parametro imposta la proprietà maxPasswordAge di un criterio di password. Il nome di visualizzazione LDAP (ldapDisplayName) per questa proprietà è maxPwdAge.

Specificare l'intervallo di tempo nel formato seguente:
D.H:M:S.F

dove:
D = Giorni (da 0 a 10675199)
H = Ore (da 0 a 23)
M = Minuti (da 0 a 59)
S = Secondi (da 0 a 59)
F = Frazioni di secondo  (da 0 a 9999999)

Nota: I valori di tempo devono essere compresi tra  0 e 10675199:02:48:05.4775807.


-MinPasswordAge
Specifica il periodo di tempo minimo prima di poter modificare una password.
Questo parametro imposta la proprietà minPasswordAge di un criterio di password. Il nome di visualizzazione LDAP (ldapDisplayName) per questa proprietà è minPwdAge.
Specificare l'intervallo di tempo nel seguente formato:
D.H:M:S.F

dove:
D = Giorni (da 0 a 10675199)
H = Ore (da 0 a 23)
M = Minuti (da 0 a 59)
S = Secondi (da 0 a 59)
F = Frazioni di secondo (da 0 a 9999999)

Nota: I valori dell'ora devono essere compresi tra i seguenti 0 e 10675199:02:48:05.


-MinPasswordLength
Specifica il numero minimo di caratteri che una password deve contenere. Questo parametro imposta la proprietà MinPasswordLength del criterio della password.


-Name
Specifica il nome dell'oggetto. Questo parametro imposta la proprietà Name dell'oggetto Active Directory. Il nome di visualizzazione LDAP (ldapDisplayName) di questa proprietà è name.


-OtherAttributes
Specifica i valori degli attributi dell'oggetto per gli attributi non rappresentati dai parametri del cmdlet. Con questo parametro è possibile impostare uno o più parametri contemporaneamente. Se un attributo ha più di un valore, è possibile assegnare più valori. Per identificare un attributo, specificare il nome LDAPDisplayName (ldapDisplayName) definito per esso nello schema di Active Directory.
Sintassi:
Per specificare un singolo valore per un attributo:
OtherAttributes @{'AttributeLDAPDisplayName'=value}
Per specificare più valori per un attributo
OtherAttributes @{'AttributeLDAPDisplayName'=value1,value2,...}
È possibile specificare i valori per più di un attributo usando il punto e virgola per separare gli attributi. La sintassi seguente mostra come impostare i valori di più attributi:
OtherAttributes @{'Attribute1LDAPDisplayName'=value; 'Attribute2LDAPDisplayName'=value1,value2;...}


-PassThru
Restituisce un oggetto che rappresenta l'elemento con cui si sta lavorando. Per impostazione predefinita, questo cmdlet non genera alcun output.


-PasswordHistoryCount
Specifica il numero di password precedenti da salvare. Un utente non può riutilizzare una password nell'elenco delle password salvate. Questo parametro imposta la proprietà PasswordHistoryCount per un criterio di password.


-Precedence
Specifica un valore che definisce la precedenza di un criterio fine-grained password rispetto agli altri criteri. Questo parametro imposta la proprietà Precedence per una fine-grained password policy.Il nome di visualizzazione LDAP (ldapDisplayName) per questa proprietà è msDS-PasswordSettingsPrecedence.

Questo valore determina quale criterio di password utilizzare quando a un utente o a un gruppo si applicano più criteri di password. In caso di conflitto, il criterio di password che ha il valore più basso della proprietà Precedence ha la priorità più alta. Ad esempio, se PasswordPolicy1 ha un valore di Precedenza pari a 200 e PasswordPolicy2 ha un valore di Precedenza pari a 100, viene utilizzato PasswordPolicy2.

In genere, i valori di precedenza dei criteri di password sono assegnati in multipli di 10 o 100, per facilitare l'aggiunta di criteri in un secondo momento. Ad esempio, se si impostano i valori di precedenza iniziali per i criteri a 100 e 200, è possibile aggiungere un altro criterio con valore di precedenza pari a 150.

Se il parametro Precedence specificato è già assegnato a un altro oggetto criterio password, il cmdlet restituisce un errore di terminazione.


-ProtectedFromAccidentalDeletion
Specifica se impedire l'eliminazione dell'oggetto. Quando questa proprietà è impostata su true, non è possibile eliminare l'oggetto corrispondente senza modificare il valore della proprietà. I valori accettabili per questo parametro sono:
  • $False o 0
  • $True o 1


-ReversibleEncryptionEnabled
Specifica se la directory deve memorizzare le password utilizzando la crittografia reversibile. Questo parametro imposta la proprietà ReversibleEncryption per un criterio di password. I valori possibili sono:
  • $False o 0
  • $True o 1


-Server
Specifica l'istanza di Active Directory Domain Services a cui connettersi, fornendo uno dei seguenti valori per un nome di dominio o un server di directory corrispondente. Il servizio può essere uno dei seguenti: Active Directory Lightweight Domain Services, Active Directory Domain Services o Active Directory snapshot instance.


-WhatIf
Mostra cosa accadrebbe se il cmdlet venisse eseguito. Il cmdlet non viene eseguito.


Avviare Windows PowerShell (amministratore) ed eseguire il seguente comando per creare e impostare il Password Settings Object (PSO) allo stesso modo di come fatto tramite GUI
New-ADFineGrainedPasswordPolicy -ComplexityEnabled:$true -LockoutDuration:"00:30:00" -LockoutObservationWindow:"00:30:00" -LockoutThreshold:"5" -MaxPasswordAge:"30.00:00:00" -MinPasswordAge:"1.00:00:00" -MinPasswordLength:"12" -Name:"PSO_Domain_Admin" -PasswordHistoryCount:"24" -Precedence:"1" -ReversibleEncryptionEnabled:$false -Server:"Server1DC.mycompany.local"

domenica 25 febbraio 2024

Windows Server 2022: Mappare cartella condivisa tramite script di logon

Negli articoli Windows Server 2022: Mappare automaticamente una cartella condivisa e Windows Server 2022: Mappare cartelle personali abbiamo visto come fare in modo che una cartella venga automaticamente mappata all'utente. In particolare nell'ultimo articolo, quando abbiamo mappato la cartella personale, abbiamo perso il collegamento alla cartella condivisa tra più utenti che ripristineremo con i passaggi di seguito indicati. Quando bisogna gestire numerosi account è consigliabile l'utilizzo delle group policy. In questo articolo verrà mostrato come agire manualmente su un gruppo ristretto di utenti e mappare una cartella condivisa tramite l'utilizzo di uno script di logon. Tratterò le group policy più in là in appositi articoli.


La cartella condivisa che andremo a mappare al logon tramite script sarà \\SERVERDC2\Cartella condivisa creata nell'articolo 
Windows Server 2022: Mappare automaticamente una cartella condivisa.


Creazione dello script di logon

Posizionarsi sul server e avviare un editor di testo come Blocco note (premere la combinazione di tasti WIN+R, digitare notepad seguito da invio).
Digitare il seguente comando
net use Y: "\\SERVERDC2\Cartella condivisa"
i doppi apici sono necessari in quanto il nome della cartella contiene uno spazio. Il comando mappa il percorso specificato \\SERVERDC2\Cartella condivisa con la lettera di unità Y:.
Blocco note
FIG 1 - Blocco note
Dal menu File selezionare Salva con nome. Salvare il file con il nome logon.bat (nella casella Nome file il nome del file va digitato tra apici per fare in modo che notepad non aggiunga l'estensione .txt)  nel percorso C:\Windows\SYSVOL\sysvol\mycompany.local\scripts
Salva con nome
FIG 2 - Salva con nome

Impostare lo script di accesso per gli account utente

Creato lo script e salvato nell'opportuno percorso, non resta che impostarlo come script di logon per uno o più account utente. L'operazione può essere eseguita tramite Utenti e computer di Active DirectoryCentro di amministrazione di Active Directory o PowerShell. Vediamo i passaggi da seguire


Utenti e computer di Active Directory
Da Server Manager cliccare sul menu Strumenti e selezionare Utenti e Computer di Active Directory (Active Directory Users and Computers). In alternativa premere la combinazione di tasti WIN+R digitare dsa.msc seguito da invio.
Server Manager, Utenti e Computer di Active Directory
FIG 3 - Server Manager, Utenti e Computer di Active Directory

Selezionare gli utenti presenti nella UO mycompany.local\Direzione\Utenti e cliccare sul pulsante Proprietà (in alternativa cliccare con il tasto destro del mouse sugli utenti selezionati e scegliere Proprietà dal menu contestuale);
Utenti e computer di Active Directory, Visualizzare le proprietà degli account utenti
FIG 4 - Utenti e computer di Active Directory, Visualizzare le proprietà degli account utenti
Selezionare la scheda Profilo. Spuntare la casella Script di accesso e digitare il nome dello script da richiamare (Logon.bat) quindi cliccare su OK.
Configurazione Script di accesso per gli account utente
FIG 5 - Configurazione Script di accesso per gli account utente

Da questo momento quando gli utenti effettueranno il logon su una workstation del dominio verrà avviato lo script che mapperà la cartella condivisa con la lettera di unità specificata.


Centro di amministrazione di Active Directory
I passaggi da eseguire utilizzando il Centro di amministrazione di Active Directory sono simili a quelli già visti per Utenti e computer di Active Directory
.

Da Server Manager cliccare sul menu Strumenti e selezionare Centro di amministrazione di Active Directory. In alternativa premere la combinazione di tasti WIN+R, digitare dsac.exe seguito da invio.
Server Manager, Centro di amministrazione di Active Directory
FIG 6 - Server Manager, Centro di amministrazione di Active Directory

Selezionare gli utenti presenti nella UO mycompany.local\Direzione\Utenti e cliccare sul link Proprietà nel riquadro Attività.
Proprietà account utente
FIG 7 - Proprietà account utente

Cliccare sulla sezione Profilo, abilitare la casella Script di accesso e digitare il nome dello script da eseguire al logon (logon.bat) quindi cliccare su OK per confermare la modifica.
Attivazione script di accesso
FIG 8 - Attivazione script di accesso

PowerShell
La stessa operazione può essere eseguita, per ogni utente, tramite PowerShell e l'utilizzo del cmdlet Set-ADUSer. Una volta avviato Windows PowerShell (amministratore) basta eseguire il comando
Set-ADUser -Identity:"CN=Giovanni Lubrano Lavadera,OU=Utenti,OU=Direzione,DC=mycompany,DC=local" -ScriptPath:"logon.bat" -Server:"ServerDC2.mycompany.local"




domenica 18 febbraio 2024

Windows Server 2022: Mappare automaticamente una cartella condivisa

In un’azienda, è fondamentale che gli utenti possano condividere informazioni e documenti tra loro. Una soluzione comune consiste nel creare una cartella pubblica condivisa a cui gli utenti del dominio possono accedere. In questo articolo verrà mostrato come creare una cartella condivisa e fornire a tutti gli utenti del dominio le abilitazioni per scrivere e cancellare file all’interno della stessa. Per rendere l’utilizzo di tale cartella il più semplice possibile per gli utenti, questa verrà automaticamente mappata dal sistema al logon.
Si tratta di un semplice esempio che può andare bene all'interno delle piccole aziende ma non è adatto in ambiente Enterprise. Andremo a creare una cartella all'interno del disco C:\ del server (anche questa operazione è generalmente sconsigliata e si preferisce creare cartelle contenenti dati su un disco diverso, o quantomeno su una partizione diversa, da quello utilizzato dal sistema operativo) per poi abilitare gli utenti del dominio.

Creazione cartella condivisa e abilitazione degli account utente appartenenti al dominio

Sul server, creare una nuova cartella sul disco C: e rinominarla utilizzando possibilmente un nome mnemonico (ad es. Cartella condivisa).
Cliccare, con il tasto destro del mouse, sulla nuova cartella e selezionare, dal menu contestuale, la voce Proprietà.
Nella finestra Proprietà, selezionare la scheda Condivisione e cliccare sul pulsante Condivisione avanzata.
Proprietà, Condivisione
FIG 1 - Proprietà, Condivisione

Abilitare la casella Condividi la cartella. In questa finestra è possibile modificare il nome con cui la cartella condivisa appare agli utenti, impostare un limite massimo di utenti che possono accedere simultaneamente alla condivisione e aggiungere un commento. Lasciare i valori di default e cliccare sul pulsante Autorizzazioni.
Condivisione avanzata
FIG 2 - Condivisione avanzata
Come visibile dalla FIG 3, sulla cartella è abilitato il gruppo Everyone con i permessi in lettura, ciò significa che chiunque può visualizzare il contenuto della cartella. Nei prossimi passi faremo in modo che solo gli utenti appartenenti al dominio possono accedere alla cartella, visualizzare e modificare il contenuto.
Selezionare il gruppo Everyone e cliccare sul pulsante Rimuovi.
Rimozione gruppo Everyone
FIG 3 - Rimozione gruppo Everyone
Una volta rimosso il gruppo Everyone, cliccare sul pulsante Aggiungi.
Aggiungi autorizzazioni
FIG 4 - Aggiungi autorizzazioni
All'interno della casella Immettere i nomi degli oggetti da selezionare, digitare Domain e cliccare sul pulsante Controlla nomi.
FIG 5 - Seleziona Utenti, Computer, Account servizio o Gruppi

Selezionare il gruppo Domain Users e cliccare su OK.
Autorizzazioni Domain Users
FIG 6 - Autorizzazioni Domain Users

Selezionare il gruppo Domain Users e cliccare su OK.
Autorizzazioni Domain Users
FIG 7 - Autorizzazioni Domain Users

Nella finestra di dialogo Seleziona Utenti, Computer, Account servizio o Gruppo cliccare su OK.
Conferma Autorizzazione a Domain Users
FIG 8 - Conferma Autorizzazione a Domain Users

All'interno della finestra Autorizzazioni per Cartella condivisa assicurarsi che il gruppo Domain Users sia selezionato quindi, in Autorizzazioni per Domain Users, selezionare la casella Controllo completo e cliccare su OK per applicare la modifica.
Domain Users, Controllo completo
FIG 9 - Domain Users, Controllo completo

Cliccare su OK all'interno della finestra Condivisione avanzata
Condivisione avanzata
FIG 10 - Condivisione avanzata

All'interno della finestra Proprietà - Cartella condivisa noteremo che adesso viene mostrato il percorso di rete \\SERVERDC2\Cartella condivisa attraverso il quale gli utenti potranno accedere alla cartella. Cliccare su Chiudi.
Proprietà Cartella condivisa, Percorso di rete
FIG 11 -  Proprietà Cartella condivisa, Percorso di rete

Il prossimo passo consiste nel fare in modo che agli utenti abilitati questa condivisione venga mappata automaticamente. Per eseguire l'operazione su un gran numero di account utente si utilizzano le group policy. Nel nostro caso, trattandosi di un gruppo ristretto di utenti, agiremo manualmente sugli account in Active Directory. Vedremo come eseguire la stessa operazione tramite group policy in un prossimo articolo. 


Mappare automaticamente una cartella condivisa tramite Utenti e computer di Active Directory

Da Server Manager cliccare sul menu Strumenti e selezionare Utenti e Computer di Active Directory (Active Directory Users and Computers). In alternativa premere la combinazione di tasti WIN+R digitare dsa.msc e premere invio.
Server Manager
FIG 12 - Server Manager

Selezionare gli utenti da abilitare (ad esempio quelli presenti nell'unità organizzativa mycompany.local\Direzione\Utenti) quindi cliccarci sul con il tasto destro del mouse e selezionare Proprietà.
Proprietà account utente
FIG 13 - Proprietà account utente

All'interno della scheda Profilo e attivare l'opzione Home directory. Nel gruppo Home directory è possibile impostare un percorso locale o un percorso mappato. Selezionare l'opzione Connetti quindi specificare la lettera con la quale si intende mappare la condivisione e, nell'apposita casella, specificare il percorso di rete della cartella condivisa (\\SERVERDC2\Cartella condivisa). Al termine cliccare su OK.
Home directory, connessione automatica Percorso di rete
FIG 14 - Home directory, connessione automatica Percorso di rete

Un messaggio di avviso ci informa che la directory specificata esiste già e di assicurarsi che tutti gli utenti dispongano delle opportune abilitazione per accedere/gestire il contenuto della cartella. Cliccare su OK.
Avviso verifica permessi su cartella condivisa
FIG 15 - Avviso verifica permessi su cartella condivisa

Da questo momento, gli utenti abilitati, si ritroveranno la cartella \\SERVERDC2\Cartella condivisa automaticamente mappata al logon con la lettera di unità impostata (Z:).


Eseguendo il logon su un client del dominio (Windows 10/Windows 11) con uno degli account abilitati alla share e aprendo Esplora file, verrà visualizzata la cartella condivisa mappata con la lettera di unità specificata nei passaggi precedenti.
Creando/copiando un file in tale cartella sarà visibile anche agli altri utenti abilitati.

Windows 11, Cartella condivisa mappata con la lettera di unità specificata
FIG 16 - Windows 11, Cartella condivisa mappata con la lettera di unità specificata


Mappare automaticamente una cartella condivisa tramite Centro di amministrazione di Active Directory

Da Server Manager cliccare sul menu Strumenti e selezionare Centro di amministrazione di Active Directory. In alternativa premere la combinazione di tasti WIN+R, digitare dsac.exe e premere invio.
Server Manager
FIG 17 - Server Manager

Selezionare gli utenti da abilitare (ad esempio quelli presenti nell'unità organizzativa mycompany.local\Direzione\Utenti) quindi cliccare su Proprietà presente nel riquadro Attività.
Centro di amministrazione di Active Directory, Proprietà account utente
FIG 18 - Centro di amministrazione di Active Directory, Proprietà account utente

Nella nuova finestra, cliccare sulla sezione ProfiloSelezionare la casella Home directory quindi l'opzione Connetti. Specificare la lettera con cui si intende mappare la cartella condivisa e nella relativa casella inserire il relativo percorso di rete \\SERVERDC2\Cartella condivisa quindi cliccare su OK.
Home directory
FIG 19 - Home directory



Mappare automaticamente una cartella condivisa tramite Powershell

La stessa operazione può essere eseguita, per ogni utente, tramite PowerShell e l'utilizzo del cmdlet Set-ADUSer. Una volta avviato Windows PowerShell (amministratore) basta eseguire il comando

Set-ADUser -HomeDirectory:"\\SERVERDC2\Cartella condivisa" -HomeDrive:"Z:" -Identity:"CN=Foghorn Leghorn,OU=Utenti,OU=Direzione,DC=mycompany,DC=local" -Server:"ServerDC2.mycompany.local"

in cui il parametro
-HomeDirectory consente di specificare il percorso di rete della cartella condivisa.
-HomeDrive permette di specificare la lettera di unità con la quale la cartella viene mappata.
-Identity specifica l'utente, nel formato Distinguished Name (DN), a cui mappare la cartella condivisa.
-Server specifica l'istanza AD DS a cui connettersi per eseguire l'operazione.








mercoledì 31 gennaio 2024

Windows Server 2022: Restore di un oggetto cancellato dal Cestino di Active Directory tramite PowerShell

Nell'articolo precedente Windows Server 2022: Restore di un oggetto cancellato dal Cestino di Active Directory abbiamo visto come recuperare, tramite GUI, un oggetto di AD eliminato e presente nel Cestino di Active Directory. In questo articolo vedremo come eseguire l'operazione mediante PowerShell.

La prima operazione da eseguire consiste nell'individuare gli oggetti cancellati presenti nel cestino di Active Directory (container Deleted Objects). Per farlo, è possibile utilizzare il cmdlet Get-ADObject con il parametro IncludeDeletedObjects. Il comando sarà simile a:
Get-ADObject -Filter 'isDeleted -eq $True -and -not (isRecycled -eq $True) -and name -ne "Deleted Objects"' -IncludeDeletedObjects 

Individuare gli oggetti cancellati presenti nel cestino di AD
FIG 1 - Individuare gli oggetti cancellati presenti nel cestino di AD

Se si conosce il tipo di oggetto da recuperare (user, computer, site, ecc) è possibile specificarlo all'interno del filtro. Ad esempio, volendo elencare i computer presenti nel cestino di AD potremmo utilizzare il seguente comando:
Get-ADObject -Filter 'objectClass -eq "computer" -and isDeleted -eq $True -and -not (isRecycled -eq $True) -and name -ne "Deleted Objects"' -IncludeDeletedObjects 
Individuare gli oggetti computer cancellati presenti nel cestino di AD
FIG 2 - Individuare gli oggetti computer cancellati presenti nel cestino di AD

Per ripristinare un oggetto cancellato presente all'interno del cestino di Active directory si utilizza il cmdlet Restore-ADObject. Al parametro -Identity è possibile passare la stringa ObjectGUID recuperata con il comando precedente Get-ADObject. Il comando sarà simile a:
Restore-ADObject -Confirm:$false -Identity:"d77006e7-4109-48dc-97a8-6b75140877c7"
Ripristino oggetto cancellato
FIG 3 - Ripristino oggetto cancellato