mercoledì 20 settembre 2023

Windows Server 2022: Rimuovere la protezione da eliminazione accidentale da un account utente

Nell'articolo Windows Server 2022: Aggiungere account utente al dominio è stato illustrato come creare un nuovo account utente all'interno del dominio e come proteggerlo da cancellazioni accidentali sia tramite GUI (attraverso il Centro di amministrazione di Active DirectoryUtenti e Computer di Active Directory) sia tramite PowerShell (utilizzando il cmdlet  Set-ADObject e il parametro -ProtectedFromAccidentalDeletion).

Se si cerca di eliminare un account protetto da cancellazioni accidentali, verrà visualizzato un messaggio simile a quello mostrato in FIG  1.
Credenziali insufficienti per eliminare l'account
FIG 1 - Credenziali insufficienti per eliminare l'account


In questo articolo verrà mostrata l'operazione inversa, ovvero come rimuovere la protezione da eliminazione accidentale da un account utente (operazione necessaria prima di poter eliminare un account).

Rimuovere la protezione da eliminazione accidentale tramite Utenti e Computer di Active Directory

Avviare Utenti e Computer di Active Directory tramite il menu Strumenti di Server Manager o eseguendo il comando dsa.msc.
Dal menu Visualizza di Utenti e computer di Active Directory selezionare Funzionalità avanzate.
Utenti e computer di Active Directory, Visualizza funzionalità avanzate
FIG 2 - Utenti e computer di Active Directory, Visualizza funzionalità avanzate

Cliccare, con il tasto destro del mouse, sull'account utente che si intende cancellare (ad es. Marketing\Utenti\Duffy Duck) e selezionare Proprietà.
Utenti e computer di Active Directory, Proprietà account utente
FIG 3 - Utenti e computer di Active Directory, Proprietà account utente
Nella finestra di dialogo relativa alle Proprietà, selezionare la scheda Oggetto e rimuovere la spunta alla casella Proteggi oggetto da eliminazioni accidentali quindi cliccare su OK.
Proprietà account, Proteggi oggetto da eliminazioni accidentali
FIG 4 - Proprietà account, Proteggi oggetto da eliminazioni accidentali

Dopo tale operazione sarà possibile eliminare l'account cliccandoci su con il tasto destro del mouse e selezionando Elimina dal menu contestuale.


Rimuovere la protezione da eliminazione accidentale tramite Centro di amministrazione di Active Directory

Avviare Centro di amministrazione di Active Directory tramite il menu Strumenti di Server Manager o eseguendo il comando dsac.exe.
Cliccare con il tasto destro del mouse sull'account utente su cui si intende eseguire l'operazione e, dal menu contestuale, selezionare Proprietà.
Centro di amministrazione di Active Directory, Proprietà account
FIG 5 - Centro di amministrazione di Active Directory, Proprietà account
Rimuovere la selezione all'opzione Proteggi da eliminazioni accidentali e cliccare su OK.
Proprietà account, Proteggi da eliminazioni accidentali
FIG 6 - Proprietà account, Proteggi da eliminazioni accidentali


Rimuovere la protezione da eliminazione accidentale tramite PowerShell

Per rimuovere la protezione da eliminazione accidentale di un account utente tramite PowerShell si utilizza il cmdlet Set-ADObject. Ad esempio, per rimuovere la protezione dall'account dell'utente Daffy Duck presente in Marketing\Utenti il comando sarà simile a
 Set-ADObject -Identity:"CN=Daffy Duck,OU=Utenti,OU=Marketing,DC=mycompany,DC=local" -ProtectedFromAccidentalDeletion:$false -Server:"ServerDC2.mycompany.local"  
PowerShell, Rimuovere la protezione da eliminazione accidentale da un account utente
FIG 7 - PowerShell, Rimuovere la protezione da eliminazione accidentale da un account utente

Per l'eliminazione di un account utente in AD tramite PowerShell va utilizzato il cmdlet Remove-ADObject. (lo stesso cmdlet utilizzato per l'eliminazione delle UO)
Con il seguente comando andremo ad eliminare l'account utente Daffy Duck presente all'interno dell'unità organizzativa Marketing\Utenti del nostro dominio mycompany.local. Il comando PowerShell da eseguire è

 Remove-ADObject -Confirm:$false -Identity:"CN=Daffy Duck,OU=Utenti,OU=Marketing,DC=mycompany,DC=local" -Server:"ServerDC2.mycompany.local"  

PowerShell, Elimina account utente
FIG 8 - PowerShell, Elimina account utente








martedì 19 settembre 2023

Windows Server 2022: Aggiungere account utente al dominio

Ora che Active Directory è installato, che il dominio e le unità organizzative sono state create è possibile passare alla creazione degli account utente.
Per default un utente che appartiene al dominio, a prescindere dalla unità organizzativa di appartenenza, può eseguire il logon su qualsiasi workstation del dominio stesso. In maniera analoga a quanto già visto per la creazione delle unità organizzative, la creazione di un nuovo account utente all'interno del dominio può essere eseguita con lo strumento Utenti e Computer di Active Directory, mediante l'utilizzo del Centro di amministrazione di Active Directory oppure tramite PowerShell

Prima di mostrare come aggiungere un nuovo utente al dominio è opportuno decidere uno standard da adottare relativamente ai nomi degli account utenti utilizzati per il logon. L'account utente dovrà essere univoco all'interno dell'intero dominio e può essere composto da caratteri alfanumerici e caratteri speciali ad eccezione di " / \ [ ] : ; | = , + * ? < >. Anche se gli spazi sono supportati è sconsigliabile utilizzarli all'interno dei logon name. Alcuni metodi comuni adottati prevedono l'utilizzo della prima lettera del nome seguito dal cognome, NomeCognome senza spazi, nome.cognome, matricola dipendente, ecc. Ciò non toglie che possiamo utilizzare un metodo a noi più congeniale e, per una questione di uniformità, è raccomandato applicare lo stesso metodo per tutti gli utenti che verranno aggiunti al dominio.

Creazione nuovo utente nel dominio tramite Utenti e Computer di Active Directory 

Da Server Manager cliccare sul menu Strumenti e selezionare Utenti e computer di Active Directory. In alternativa premere la combinazione di tasti WIN+R, digitare dsa.msc e premere invio.
Server Manager
FIG 1 - Server Manager

L'UO standard contenente gli utenti è quella nominata Users presente all'interno del dominio. In questo articolo, invece, andremo a creare il nostro primo utente all'interno dell'unità organizzativa Utenti presente in Direzione (UO create negli articoli precedenti). Espandere il dominio e l'unità organizzativa Direzione quindi selezionare l'unità organizzativa Utenti presente al suo interno.
Cliccare sull'icona Crea nuovo utente nel contenitore corrente (in alternativa cliccare con il tasto destro del mouse sull'unità organizzativa Utenti, selezionare Nuovo quindi Utente dal menu contestuale).
Crea un nuovo utente nel contenitore corrente
FIG 2 - Crea un nuovo utente nel contenitore corrente

Compilare i campi della nuova finestra di dialogo con il nome e cognome dell'utente da creare (il campo Nome completo verrà automaticamente compilato). Nella casella Nome accesso utente va inserito un identificativo con cui l'utente potrà effettuare il logon sulle workstation di dominio. Tale identificativo dovrà essere univoco sull'intero dominio. Una volta compilati i campi richiesti cliccare su Avanti per proseguire.
Nuovo oggetto Utente
FIG 3 - Nuovo oggetto Utente

Il passo successivo consiste nello specificare una password per l'utente appena creato. La password deve soddisfare i requisiti minimi di complessità: deve contenere almeno una lettera maiuscola, almeno un carattere numerico e avere una lunghezza di almeno 7 caratteri. In questa finestra possiamo impostare diverse opzioni:
  • Cambiamento obbligatorio password all'accesso successivo 
    Si tratta dell'opzione selezionata di default. Solitamente in questi casi l'amministratore specifica una password temporanea che l'utente dovrà cambiare al primo logon con una a propria scelta.
  • Cambiamento password non consentito
    Selezionando tale opzione si impedisce all'utente di modificare la password. Per impedire il blocco dell'account alla scadenza della password, insieme a questa opzione va selezionata anche Nessuna scadenza password. Per default, se non diversamente specificato, la password dell'utente scadrà dopo 42 giorni.
  • Nessuna scadenza password
    Abilitare tale opzione se non si vuole che la password dell'utente scada.
  • Account disabilitato
    Selezionando l'opzione Account disabilitato l'utenza verrà comunque creata ma l'utente non potrà eseguire il logon al dominio finché il suo account non verrà abilitato.
Per la creazione di questo primo utente specifichiamo una password temporanea e lasciamo attiva solo l'opzione Cambiamento obbligatorio password all'accesso successivo in modo da costringere l'utente a modificarla al primo logon. Cliccare su Avanti per proseguire.
Password account utente
FIG 4 - Password account utente

Nella finestra di dialogo successiva verrà mostrato un riepilogo delle informazioni del nuovo utente. Cliccare su Fine per procedere alla creazione dell'account.
Riepilogo impostazioni nuovo account utente
FIG 5 - Riepilogo impostazioni nuovo account utente

L'account è stato creato nel percorso specificato.
Account utente creato in Active Directory
FIG 6 - Account utente creato in Active Directory

Anche per gli account utente può essere attivata la protezione contro le cancellazioni accidentali come visto per le unità organizzative. Una volta creato l'account cliccarci su con il tasto destro del mouse e selezionare Proprietà dal menu contestuale. Per proteggere l'account selezionare la casella Proteggi oggetto da eliminazioni accidentali e cliccare su OK.
Proprietà account utente
FIG 7 - Proprietà account utente





Creazione nuovo utente nel dominio 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 8 - Server Manager

Sul pannello laterale di sinistra selezionare il proprio dominio (mycompany.local) quindi nel pannello centrale cliccare due volte sull'unità organizzativa Direzione e successivamente eseguire la stessa operazione su Utenti.
Nel pannello Attività (sulla destra della finestra) cliccare su Nuovo e selezionare Utente (in alternativa cliccare con il tasto destro del mouse in una parte vuota del pannello centrale e selezionare Nuovo->Utente).
Nuovo account utente
FIG 9 - Nuovo account utente

Come visibile dalla finestra di dialogo che appare, ci è possibile inserire molte più informazioni rispetto a quanto visto con lo strumento Utenti e Computer di Active Directory. Da questa schermata, spuntando l'apposita casella (Proteggi da eliminazioni accidentali), possiamo anche proteggere l'account da eliminazioni accidentali come visto per le UO. Una volta inserito Nome, Cognome, la password, Accesso Utente UPN e SamAccountName, cliccare su OK per creare l'account utente.
Crea utente
FIG 10 - Crea utente

Account utente creato in Active Directory
FIG 11 - Account utente creato in Active Directory 




Creazione nuovo utente nel dominio con PowerShell

Per la creazione di un account utente in AD tramite PowerShell va utilizzato il cmdlet New-ADUser
Con il seguente comando andremo a creare un nuovo utente all'interno dell'unità organizzativa Utenti contenuta in Direzione all'interno del nostro dominio mycompany.local. Il comando PowerShell da eseguire è

 New-ADUser -Path "OU=Utenti,OU=Direzione,DC=mycompany,DC=local" -AccountPassword (ConvertTo-SecureString Password123 -AsPlainText -force) -Name "Giovanni Lubrano Lavadera" -Givenname Giovanni -Surname "Lubrano Lavadera" -DisplayName "Giovanni Lubrano Lavadera" -SamAccountName "Giovanni.Lubrano" -UserPrincipalName "Giovanni.Lubrano@mycompany.local" -ChangePasswordAtLogon 1 -Enabled 1  

Parametri
  • -Path Al parametro path va passato il percorso (Distinguished Name) in cui creare il nuovo account utente.
  • -AccountPassword Consente di specificare la password da assegnare al nuovo account. Il valore viene memorizzato come stringa cifrata. Prima di poter passare la password a -AccountPassword questa va convertita in una SecureString con il comando ConvertTo-SecureString. 
  • -Name Specifica il nome dell'oggetto (proprietà Name dell'oggetto user).
  • -Givenname Nome dell'utente.
  • -Surname Cognome dell'utente.
  • -DisplayName Specifica il DisplayName dell'oggetto.
  • -SamAccountName Specifica il nome Security Account Manager (SAM) per l'account utente. La lunghezza della stringa può arrivare a 256 caratteri ma per compatibilità con i vecchi sistemi operativi si consiglia di limitare la lunghezza a un massimo di 20 caratteri.
  • -UserPrincipalName User Principal Name (UPN) rappresenta il nome dell'utente in un formato analogo all'email. Un UPN è formato dal logon name, dal separatore/simbolo '@' e dal nome dominio (suffisso UPN).
  • -ChangePasswordAtLogon Necessita in input di un valore di tipo Boolean. A tale parametro può essere passato il valore 0 (per FALSO) o 1 (per VERO). Passando il valore 1 si forza l'utente a modificare la password al primo logon eseguito con la password temporanea (Password123).
  • -Enabled Anche tale parametro richiede in input un valore Boolean. Passandogli il valore 1 si indica che l'account creato è abilitato.

PowerShell, Creazione nuovo account utente in Active Directory
FIG 12 - PowerShell, Creazione nuovo account utente in Active Directory

Per proteggere l'account da eliminazioni accidentali, è possibile utilizzare il cmdlet Set-ADObject insieme al parametro -ProtectedFromAccidentalDeletion:$true come indicato nel seguente comando
 Set-ADObject -Identity:"CN=Giovanni Lubrano Lavadera,OU=Utenti,OU=Direzione,DC=mycompany,DC=local" -ProtectedFromAccidentalDeletion:$true -Server:"ServerDC2.mycompany.local"  

Per velocizzare l'inserimento di numerosi account utente all'interno del dominio è possibile preparare un file CSV (comma-separated values): un file di testo contenente le informazioni degli utenti, separati da virgole, da aggiungere al dominio. Il file sarà simile a quello mostrato in FIG 13.
File CSV contenete l'elenco degli utenti da aggiungere al dominio
FIG 13 - File CSV contenete l'elenco degli utenti da aggiungere al dominio

Una volta creato il file sul server (nell'esempio al file è stato assegnato il nome UserAD.csv e copiato in C:\) andremo ad eseguire il seguente comando in Windows PowerShell (amministratore) che aggiunge gli utenti elencati all'interno del file al dominio.
 Import-Csv -Path C:\UserAD.csv | ForEach-Object {New-ADUser -Path $_.ou -AccountPassword (ConvertTo-SecureString Password123 -AsPlainText -force) -Name $_.name -Givenname $_.fname -Surname $_.lname -DisplayName $_.name -SamAccountName $_.sam -UserPrincipalName $_.email -ChangePasswordAtLogon 1 -Enabled 1}  

PowerShell, Import del file CSV e creazione account utente all'interno del dominio
FIG 14 - PowerShell, Import del file CSV e creazione account utente all'interno del dominio

Account utente importati dal file CSV tramite PowerShell
FIG 15 - Account utente importati dal file CSV tramite PowerShell

Il file CSV e il file di testo contenente il comando in PowerShell possono essere scaricati dal seguente link






lunedì 18 settembre 2023

PowerShell: Diagnostica delle prestazioni di avvio/spegnimento/standby/ripresa di Windows

Da Sistemista ci si trova spesso a dover analizzare problemi di prestazioni legati ai processi di avvio/arresto/ibernazione/ripresa di una workstation/Server. Microsoft fornisce una serie di registri eventi di sistema per diversi scopi che possono essere utili in tali analisi. Nel Visualizzatore eventi di Windows, questi registri si trovano in un ramo speciale chiamato "Registri applicazioni e servizi". Windows registra gli eventi di diagnostica delle prestazioni nel registro eventi Microsoft-Windows-Diagnostics-Performance/Operational. Per aprire questo registro in Visualizzatore eventi di Windows (eventvwr), espandere il ramo Registri applicazioni e servizi -> Microsoft -> Windows -> Diagnostics-Performance ->Operativo.
Visualizzatore eventi, Diagnostics-Performance
FIG 1 - Visualizzatore eventi, Diagnostics-Performance

Dal registro è possibile visualizzare un elenco di diversi eventi diagnostici. Come si può notare dalla FIG 1, gli eventi con lo stesso ID possono essere di tipi (livelli) diversi (Avviso, Errore e Critico) che dipendono dalla durata del processo di avvio/arresto. Questi eventi contengono internamente molti parametri importanti, ma non sono visibili nella descrizione dell'evento (anche il Visualizzatore eventi di Windows non li visualizza). L'unico modo per visualizzare questi parametri è fare doppio clic sull'evento per visualizzarne le proprietà, passare alla scheda  Dettagli e selezionare XML.
Proprietà evento, XML
FIG 2 - Proprietà evento, XML


Nella seguente tabella sono riportati le descrizioni degli Event ID.
Event ID Descrizione
Monitoraggio delle prestazioni di avvio
100
Avvio di Windows
101
L'avvio dell'applicazione ha richiesto più tempo del consueto, determinando una riduzione del livello delle prestazioni del processo di avvio del sistema
102
L'inizializzazione del driver ha richiesto più tempo del previsto, determinando una riduzione del livello delle prestazioni del processo di avvio del sistema
103
L'avvio di questo servizio di avvio ha richiesto più tempo del previsto, determinando una riduzione del livello delle prestazioni del processo di avvio del sistema
104
L'inizializzazione del sistema Core ha richiesto più tempo, con conseguente riduzione delle prestazioni nel processo di avvio del sistema.
105
Le ottimizzazioni in primo piano (prefetching) hanno richiesto più tempo per essere completate, con un conseguente calo delle prestazioni nel processo di avvio del sistema.
106
Le ottimizzazioni in background (prefetching) hanno richiesto più tempo per essere completate, con conseguente riduzione delle prestazioni nel processo di avvio del sistema.
107
L'applicazione dei criteri computer ha causato un rallentamento nel processo di avvio del sistema
108
L'applicazione dei criteri utente ha causato un rallentamento nel processo di avvio del sistema
109
L'inizializzazione del dispositivo ha richiesto più tempo del previsto, determinando una riduzione del livello delle prestazioni del processo di avvio del sistema
110
L'inizializzazione della gestione delle sessioni ha causato il rallentamento del processo di avvio
Monitoraggio delle prestazioni di arresto del sistema
200
Arresto di Windows
201
Questa applicazione ha causato un ritardo nel processo di spegnimento del sistema.
202
Questo dispositivo ha causato un ritardo nel processo di spegnimento del sistema
203
Il servizio ha causato un rallentamento nel processo di arresto del sistema
Monitoraggio delle prestazioni in standby
300
Windows ha ripreso dallo standby
301
Questa applicazione ha causato un ritardo durante lo standby
302
Questo driver ha causato un ritardo durante lo standby durante la manutenzione di un dispositivo
303
Questo servizio ha causato un ritardo durante la sospensione ibrida
304
La creazione del file hiber è stata più lenta del previsto
305
La permanenza delle cache del disco è stata più lenta del previsto
306
La preparazione del sottosistema video per la sospensione è stata più lenta del previsto
307
La preparazione di Winlogon per la sospensione era più lenta del previsto
308
La preparazione della memoria di sistema per la sospensione è stata più lenta del previsto
309
La preparazione del sistema principale per la sospensione è stata più lenta del previsto
310
La preparazione dei thread di lavoro del sistema per la sospensione è stata più lenta del previsto
350
Il tempo di inizializzazione del BIOS è stato superiore a 250 ms (requisito del logo) durante il ripristino del sistema
351
Questo driver ha risposto più lentamente del previsto alla richiesta di ripristino durante la manutenzione di questo dispositivo
352
La lettura del file hiber è stata più lenta del previsto
Monitoraggio delle prestazioni del sistema
400
Informazioni sull'evento di monitoraggio delle prestazioni del sistema
401
Questo processo utilizza il tempo del processore e influisce sulle prestazioni di Windows
402
Questo processo sta eseguendo attività eccessive del disco e ha un impatto sulle prestazioni di Windows
403
Questo driver utilizza troppe risorse e influisce sulle prestazioni di Windows
404
Questo driver attende più del previsto su un dispositivo
405
Questo file è frammentato e influisce sulle prestazioni di Windows
406
L'I/O del disco su questo file sta richiedendo più tempo del previsto
407
Questo processo utilizza troppa memoria di sistema
408
Molti processi utilizzano troppa memoria di sistema
Monitoraggio delle prestazioni del sistema
500
Il Desktop Window Manager sta riscontrando un forte conflitto di risorse
501
Il Desktop Window Manager sta riscontrando un forte conflitto di risorse


Dovendo effettuare l'analisi sulle prestazioni di avvio/spegnimento/standby/ripresa, dovremmo prestare attenzione agli eventi 1xx, 2xx e 3xx. Come visibile in tabella e in FIG 1, gli eventi 100, 200 e 300 sono eventi di base seguiti da 1xx, 2xx e 3xx che forniscono informazioni aggiuntive sul problema.

Supponiamo di voler individuare l'applicazione che rallenta l'avvio di Windows. Windows registra l'ora di avvio e i tempi di riduzione prestazioni (in millisecondi) per ogni servizio e sottosistema avviato. Grazie a questi dati, è possibile identificare potenziali problemi con i servizi che richiedono troppo tempo per essere avviati. In questo caso l'Event ID che ci interessa è il 101 e i livelli Critico/Errore (livelli 1 e 2).

PowerShell può esserci d'aiuto in tali contesti. Tramite questo semplice script, da eseguire come amministratore, vengono evidenziati tutti gli eventi con Event ID 101 e di livello 1 e 2 degli ultimi 60 giorni.
 $Days = 60  
   
 $machineName = @{  
   Name = 'Nome PC'  
   Expression = { $env:COMPUTERNAME }  
 }  
   
 $FileName = @{  
     Name = 'Nome File';  
     Expression = { $_.properties[2].value }  
 }  
   
 $Name = @{  
     Name = 'Nome';  
     Expression = { $_.properties[4].value }  
 }  
   
 $Version = @{  
     Name = 'Versione'  
     Expression = { $_.properties[6].value }  
 }  
   
 $TotalTime = @{  
     Name = 'Tempo Totale'  
     Expression = { $_.properties[7].value }  
 }  
   
 $DegradationTime = @{  
     Name = 'Tempo riduzione prestazioni'  
     Expression = { $_.properties[8].value }  
 }  
   
 Get-WinEvent -FilterHashtable @{  
   LogName='Microsoft-Windows-Diagnostics-Performance/Operational'  
   Id=101  
   StartTime = (Get-Date).AddDays(-$Days)  
   Level = 1,2  
 } |  
 Select-Object -Property $MachineName, TimeCreated, $FileName, $Name, $Version, $TotalTime, $DegradationTime, Message | Out-GridView  

Script PowerShell, Get-WinEvent
FIG 3 - Script PowerShell, Get-WinEvent







giovedì 14 settembre 2023

Windows Server 2022: Visualizzare informazioni sulle unità organizzative tramite PowerShell

Per visualizzare informazioni su una o più unità organizzative tramite l'utilizzo di PowerShell è possibile utilizzare il cmdlet Get-ADOrganizationalUnit.

Sintassi
Get-ADOrganizationalUnit
   [-AuthType <ADAuthType>]
   [-Credential <PSCredential>]
   -Filter <String>
   [-Properties <String[]>]
   [-ResultPageSize <Int32>]
   [-ResultSetSize <Int32>]
   [-SearchBase <String>]
   [-SearchScope <ADSearchScope>]
   [-Server <String>]
   [<CommonParameters>]
   
Get-ADOrganizationalUnit
   [-AuthType <ADAuthType>]
   [-Credential <PSCredential>]
   [-Identity] <ADOrganizationalUnit>
   [-Partition <String>]
   [-Properties <String[]>]
   [-Server <String>]
   [<CommonParameters>]

Get-ADOrganizationalUnit
   [-AuthType <ADAuthType>]
   [-Credential <PSCredential>]
   -LDAPFilter <String>
   [-Properties <String[]>]
   [-ResultPageSize <Int32>]
   [-ResultSetSize <Int32>]
   [-SearchBase <String>]
   [-SearchScope <ADSearchScope>]
   [-Server <String>]
   [<CommonParameters>]
   

Parametri

-AuthType 
Specifica il metodo di autenticazione. I valori accettati dal parametro sono:
  • Negotiate oppure 0 (default)
  • Basic oppure 1
-Credential
Specifica le credenziali dell'account utente con cui eseguire il comando. 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.

-Filter
Specifica una stringa di query che recupera gli oggetti di Active Directory. Questa stringa usa la sintassi del linguaggio delle espressioni di PowerShell (PowerShell Expression Language syntax) che fornisce un ricco supporto alla conversione di tipo per i tipi di valore ricevuti dal parametro Filter.

-Identity
Tale parametro specifica l'oggetto gruppo Active Directory su cui si desidera intervenire. Al parametro può essere passato un qualsiasi valore che identifica il gruppo in maniera univoca come:
Distinguished name
GUID (objectGUID)
Security identifier (objectSid)
Security Account Manager account name (sAMAccountName) 

-LDAPFilter
Specifica una query LDAP che viene utilizzata per filtrare gli oggetti Active Directory. 

-Partition
A tale parametro va passato il Distinguished Name (DN) di una partizione di Active Directory. Il cmdlet utilizzerà tale partizione per ricercare l'oggetto specificato dal parametro Identity.

-Properties
Specifica le proprietà dell'oggetto da recuperare. Può essere usato per recuperare le proprietà che non sono incluse nel set di default.

-ResultPageSize
Specifica il numero di oggetti da includere in una pagina per una query AD DS (Active Directory Domain Services).

-ResultSetSize
Specifica il numero massimo di oggetti da restituire per la query AD DS (Active Directory Domain Services).

-SearchBase
Specifica un percorso Active Directory all'interno del quale effettuare la ricerca.

-SearchScope
Specifica l'ambito di una ricerca Active Directory. I valori accettabili per questo parametro sono:
  • Base o 0
  • OneLevel 1
  • SubTree o 2

-Server
Permette di specificare l'istanza di Active Directory Domain Services a cui connettersi per recuperare le informazioni della UO.



Esempi

Esempio 1
Get-ADOrganizationalUnit -Properties CanonicalName -Filter * | Format-Table CanonicalName, DistinguishedName
oppure
Get-ADOrganizationalUnit -Filter 'Name -like "*"' | Format-Table Name, DistinguishedName -A
Elenca tutte le unità organizzative presenti nel dominio
Visualizza tutte le UO presenti in AD
FIG 1 - Visualizza tutte le UO presenti in AD


Esempio 2
Get-ADOrganizationalUnit -Identity 'OU=Direzione,DC=mycompany,DC=local' | Format-Table Name,Country,PostalCode,City,StreetAddress,State -A
Visualizza i campi Country, PostalCode, City, StreetAddress, State dell'UO specificata.
Visualizza i campi specificati di una UO
FIG 2 - Visualizza i campi specificati di una UO


Esempio 3
Get-ADOrganizationalUnit -LDAPFilter '(name=*)' -SearchBase 'OU=Direzione,DC=mycompany,DC=local -SearchScope OneLevel | Format-Table Name,Country,PostalCode,City,StreetAddress,State
Questo comando ottiene le UO sotto l'UO Direzione utilizzando un filtro LDAP.
Visualizza le UO contenute all'interno di una UO specificata tramite filtro LDAP
FIG 3 - Visualizza le UO contenute all'interno di una UO specificata tramite filtro LDAP






mercoledì 13 settembre 2023

PowerShell: Monitorare la temperatura dell'hardware

Monitorare la temperatura dell'hardware di un pc può rivelarsi fondamentale nella prevenzione dei guasti o cali di prestazioni e nel miglioramento delle condizioni operative. I computer sono dotati di diversi sensori in grado di rilevare la temperatura dei diversi componenti (CPU, HD, motherboard, Ram, ecc) tuttavia in Windows non esiste un modo semplice e integrato per monitorare tali sensori.

Per monitorare la temperatura dell'hardware tramite PowerShell ci viene in soccorso il modulo PSTemperatureMonitor (https://github.com/TobiasPSP/PSTemperatureMonitor). Il modulo utilizza una DLL open-source rilasciata da https://openhardwaremonitor.org/ che consente di interrogare i sensori di temperatura presenti nel sistema. La libreria aggiornata consente di rilevare la temperatura di un'ampia gamma di CPU e di HD.
Prima di poter utilizzare tale modulo va installato tramite il seguente comando da una  PowerShell eseguito come amministratore

 Install-Module -Name PSTemperatureMonitor   
Installazione Modulo PSTemperatureMonitor
FIG 1 - Installazione Modulo PSTemperatureMonitor

Il modulo fornisce il cmdlet Start-MonitorTemperature per monitorare la temperatura dell'hardware. Per monitorare le temperature ad intervalli di 5 secondi è possibile utilizzare il seguente comando (anche questo va eseguito con privilegi di amministratore locale necessario per leggere lo stato dell'hardware)
 Start-MonitorTemperature -Interval 5 | Format-Table -Wrap  

Per terminare il monitoraggio premere la combinazione di tasti CTRL+C.
Monitoraggio Temperature, Start-MonitorTemperature
FIG 2 - Monitoraggio Temperature, Start-MonitorTemperature