Poco tempo fa ho pubblicato il mio script iniziale per trovare gli utenti che sono loggati in un server e disconnetterli da remoto. Questo è stato diversi anni fa e ho pensato di fare un altro tentativo per cercare di migliorare la velocità, migliorare la formattazione e aggiungere alcuni interruttori dedicati con un po’ più di flessibilità. Infine, ho voluto cambiare quel brutto nome non convenzionale in qualcosa di più approvato da Powershell. Chiamo questa nuova funzione Get Logged In Users.
La struttura sottostante continuerà ad utilizzare la sessione di query, quindi questo non è cambiato. Quello che è cambiato è che ora possiamo specificare un utente specifico o trovare dove un utente è collegato in un dominio. Un’altra nota è la capacità di disconnetterli usando un semplice interruttore, che può sicuramente tornare utile se si sta controllando un registro di sistemi.
Get Logged In Users Using Powershell
Guardando indietro non so perché ho aggiunto il modulo ActiveDirectory e l’ho fatto eseguire come amministratore. Semplicemente non è necessario e non è richiesto per eseguire questa funzione. Tuttavia, vi consiglio vivamente di eseguire questa funzione su una macchina Windows 10 o Server 2016 e successivi con Powershell 5 perché, diciamocelo, siamo nel 2020.
Parametri
-ComputerName
Descrizione: Questo specificherà il ComputerName che vorresti controllare. Se non viene specificato alcun ComputerName, verrà controllato il computer locale.
-UserName
Descrizione: Se il nome utente specificato viene trovato loggato in una macchina, lo mostrerà nell’output.
-LogOff
Descrizione: Se il parametro logoff è specificato, disconnetterà l’utente dal computer. Si raccomanda di eseguire senza l’interruttore logoff per vedere prima i risultati.
Come eseguire Get Logged In User Powershell Script
Per eseguire lo script ci sono un paio di cose da fare. Prima di tutto, dovete impostare la vostra politica di esecuzione su RemoteSigned o bypassare. Questo è uno standard per l’esecuzione di qualsiasi script Powershell.
Poi è necessario dot source lo script poiché è una funzione. Per dot source lo script fate come segue:
- Copiate lo script sopra e salvatelo in qualsiasi posizione. In questo esempio lo salverò nella mia cartella C:\Scripts.
- Nella finestra Powershell digitate: . .\_Scripts\Get-LoggedInUser.ps1 – Notate i due punti prima del backslash.
Get Logged On Users On Remote Computers
La cosa migliore che amo di questo script è la vostra capacità di ottenere chi è connesso ad un computer remoto. Questo mitiga la necessità di accedere fisicamente al computer e controllare in questo modo. Poiché questo script Powershell permette di interrogare server e computer remoti, lo rende altamente automatizzabile e molto scalabile. Utilizzando questo script, è possibile controllare 1 server o 1.000 server e sarebbe la stessa quantità di sforzo per la persona che lo sta eseguendo. È impressionante e mi piace come si può fare tutto dal proprio computer Windows 10.
Si può anche trovare dove un utente è collegato in un dominio molto facilmente. A seconda di quante macchine dovrete iterare, può ovviamente richiedere del tempo, ma può essere fatto. Ecco un semplice frammento di codice su come trovare dove un utente è connesso.
ErrorAction SilentlyContinue è usata per sopprimere gli errori di connessione e visualizzare un output pulito
Così avete una soluzione facile e veloce a un problema che molti amministratori IT hanno incontrato nel loro viaggio da sysadmin. Sono ben consapevole del fatto che è possibile farlo anche tramite i criteri di gruppo, se si volesse seguire questa strada, o si può fare questo tramite qualche strumento GUI, ma mi piace sempre sporcarmi le mani con Powershell.