Gestire gli aggiornamenti di sistema da PowerShell

Per gli amanti della PowerShell, ecco come conoscere gli aggiornamenti installati su una macchina, utilizzando la Powershell:

PS C:\> Get-HotFix|sort -property InstalledOn

Il comando Get-Hotfix recupera tutti gli hotfix installati, mentre la pipe sort si occupa di mostrarli in ordine di data di installazione (e non alfabeticamente, come da default).

Da segnalare che il comando Get-Hotfix include anche i parametri -ComputerName e -Credential per ottenere la lista degli hotfix installati su una macchina remota.

Infine, per la gestione e installazione degli update di sicurezza attraverso PowerShell (anziché attraverso interfaccia grafica), segnalo questo modulo da installare per avere nuove classi di gestione: http://tinyurl.com/bvktnbt

Powershell: Gestire le DACL degli Authenticated Users

Mi è recentemente capitata la (s)fortuna di dover creare uno script PowerShell per compiere delle operazioni in ActiveDirectory.

Tra i compiti da eseguire, dovevo eliminare le DACL del gruppo “Authenticated Users” alla creazione di una nuova Organizational Unit.

Dato che i permessi (Read+ListChildren) assegnati al gruppo “Authenticated Users” per gli oggetti di tipo organizationalunit vengono impostati automaticamente dalle regole del DefaultSchema, le possibilità erano due:

  1. Accedere come SchemaAdmin e modificare le security dell’oggetto organizationalunit
  2. Far creare l’OU con i permessi di default e modificarli poi tramite script

La seconda opzione è meno invasiva ed ho quindi optato per quest’ultima.

Per agevolare le operazioni di gestione di ActiveDirectory tramite PowerShell avevo installato un PSSnapIn sviluppato da terze parti, Activer Roles Server (disponibile qui: http://www.quest.com/activeroles-server/), che tra i comandi aggiuntivi ha anche:

Get-QADPermission #Retrieve access control entries (ACEs)
Remove-QADPermission #Delete access control entries (ACEs) from the discretionary access control list (DACL) of a directory object

Concatenando i due comandi potevo ottenere il risultato voluto:

Get-QADPermission -account <Distinguished name> <OU> | Remove-QADPermission

ovvero

Get-QADPermission -SchemaDefault -account "Authenticated Users" <OU> | Remove-QADPermission

Essendo il gruppo Authenticated Users” un gruppo ForeignSecurityPrincipals con un Well-known SID, è possibile utilizzare nello script, al posto del DistinguishedName, direttamente il SID, che per tale gruppo è S-1-5-11 (vedi il technet per i well-known SID: http://technet.microsoft.com/en-us/library/cc978401.aspx).

Il comando dell’esempio diventa quindi:

Get-QADPermission -SchemaDefault -account S-1-5-11 <OU> | Remove-QADPermission