För ett tag sedan publicerade jag mitt första skript för att hitta de användare som är inloggade på en server och logga ut dem på distans. Det var flera år sedan och jag tänkte att jag skulle ta en ny chans att försöka förbättra hastigheten, förbättra formateringen och lägga till några dedikerade växlar med lite mer flexibilitet. Slutligen ville jag ändra det fula, okonventionella namnet till något mer Powershell-godkänt. Jag kallar den här nya funktionen för Get Logged In Users (hämta inloggade användare).
Den underliggande strukturen kommer fortfarande att använda query session så det har inte ändrats. Det som har ändrats är att vi nu kan ange en specifik användare eller hitta var en användare är inloggad i en domän. En annan notering är möjligheten att logga ut dem med hjälp av en enkel switch så det kan definitivt vara praktiskt om du kontrollerar en logg av system.
Hämta inloggade användare med hjälp av Powershell
Om jag ser tillbaka vet jag inte varför jag lade till ActiveDirectory-modulen och fick den att köras som en administratör. Det behövs helt enkelt inte och krävs inte för att köra den här funktionen. Jag rekommenderar dock starkt att du kör den här på en Windows 10-maskin eller Server 2016 och senare med Powershell 5, för låt oss inse att vi är år 2020.
Parameters
-ComputerName
Description: Detta anger det ComputerName som du vill kontrollera. Om inget ComputerName anges kontrolleras den lokala datorn.
-UserName
Beskrivning:
-LogOff
Beskrivning: Om det angivna användarnamnet hittas inloggat på en maskin visas det i utdata.
-LogOff
Beskrivning: Om det angivna användarnamnet hittas inloggat på en maskin visas det i utdata: Om parametern logoff anges loggas användaren ut från datorn. Det rekommenderas att köra utan logoff för att visa resultaten först.
Hur man kör Powershell-skriptet Get Logged In User
För att köra skriptet finns det ett par saker som du måste göra. Först och främst måste du ställa in din exekveringspolicy till RemoteSigned eller bypass. Detta är en standard vid körning av alla Powershell-skript.
Nästan måste du punktkälla skriptet eftersom det är en funktion. För att göra punktkällan till skriptet gör du följande:
- Kopiera skriptet ovan och spara det på valfri plats. I det här exemplet sparar jag det i mappen C:\_Scripts.
- I Powershell-fönstret skriver du: . .\_Scripts\Get-LoggedInUser.ps1 – Notera de två punkterna före backslash.
Hämta inloggade användare på fjärrdatorer
Det bästa som jag tycker om med det här skriptet är att du kan få fram vem som är inloggad på en fjärrdator. Detta mildrar behovet av att fysiskt logga in på datorn och kontrollera på det sättet. Eftersom det här Powershell-skriptet låter dig fråga om fjärrservrar och fjärrdatorer gör det det mycket automatiserbart och mycket skalbart. Med hjälp av det här skriptet kan du kontrollera 1 server eller 1 000 servrar och det skulle vara lika mycket ansträngning för den person som kör det. Det är fantastiskt och jag älskar att du kan göra allt från din egen Windows 10-dator.
Du kan också hitta var en användare är inloggad i en domän mycket enkelt. Beroende på hur många maskiner du ska iterera genom kan det naturligtvis ta lite tid, men det går att göra. Här är ett enkelt kodutdrag som visar hur man får fram var en användare är inloggad
ErrorAction SilentlyContinue används för att undertrycka anslutningsfel och visa ren utdata
Så där har du det, en snabb och enkel lösning på ett problem som många IT-administratörer har stött på under sin sysadmin-resa. Jag är väl medveten om att du också kan göra detta via grupprinciper om du vill gå den vägen, eller så kan du göra detta via något GUI-verktyg, men jag gillar alltid att få mina händer smutsiga med Powershell.