Windows: find ud af, hvem der er logget ind hvor

Windows: find ud af, hvem der er logget ind hvor
- Åh, intet virker for mig, hjælp!
- Bare rolig, vi ordner alt nu. Giv din computer navn...
(klassikere af genren fra opkald til teknisk support)

Det er godt, hvis du har et værktøj a la BgInfo eller dine brugere kender til Windows+Pause/Break-genvejen og ved, hvordan de skal trykke på det. Der er endda sjældne eksemplarer, der har formået at lære navnet på deres bil. Men ofte, ud over sit hovedproblem, har den, der ringer, et andet problem: at finde ud af computerens navn/IP-adresse. Og ofte tager det meget mere tid at løse dette andet problem end det første (og du skulle bare ændre tapetet eller returnere den manglende genvej :).
Men det er meget rart at høre noget som:
- Tatyana Sergeevna, bare rolig, jeg forbinder allerede ...


Og du behøver ikke meget til dette.
En teknisk supportspecialist behøver kun at huske navnene på maskinerne og huske, hvem der arbejder for hvilke.
Inden jeg beskriver den løsning, vi bruger i øjeblikket, vil jeg kort se på andre muligheder, så jeg kan kritisere dem til bunds og forklare mit valg.

  1. BgInfo, Desktopoplysninger og lignende. Hvis der er mange penge, er der betalte. Pointen er, at der vises tekniske oplysninger på skrivebordet: maskinnavn, IP-adresse, login mv. I Desktop Info kan du endda presse præstationsgrafer ind på halvdelen af ​​skærmen.
    Hvad jeg ikke kan lide er, at for den samme Bginfo, for eksempel, skal brugeren minimere vinduer for at se de nødvendige data. Mine kolleger og jeg har også observeret mere end én gang på BgInfo karakteristisk artefakt, når ny tekst vises oven på den gamle.
    Nogle brugere er irriterede over, at administratorer tegner en skræmmende 192.168.0.123 i ansigtet på en kat, der er strakt ud på skrivebordet, hvilket ødelægger baggrundsbilledets æstetik, og det er selvfølgelig frygteligt demotiverende og fuldstændig dræber arbejdsånden. .
  2. En etiket a la "Hvem er jeg" (forsøg ikke at tilføje et spørgsmålstegn til det til sidst :). En klassisk genvej på skrivebordet, bag hvilken der gemmer sig et pænt eller knap så pænt script, der viser den nødvendige information i form af en dialogboks. Nogle gange, i stedet for en genvej, lægger de selve scriptet på skrivebordet, hvilket IMHO er dårlig manerer.
    Ulempen er, at for at starte genvejen, som i det første tilfælde, skal du minimere alle åbne vinduer (vi tager ikke hensyn til de lykkens darlings, der har det eneste kabalevindue åbent på deres arbejdsmaskine). Ved dine brugere i øvrigt, hvor de skal klikke for at minimere alle vinduer? Det er rigtigt, en finger i administratorens øje.

Hætten antyder også, at begge de ovenfor beskrevne metoder har den største ulempe, at brugeren er involveret i at indhente information, som kan være blind, dum eller endda lyve.
Jeg vil ikke overveje muligheden for at øge computerfærdigheden, når alle ved, hvor i Windows de skal slå navnet på deres maskine op: det er en ædel sag, men meget vanskelig. Og hvis virksomheden har personaleomsætning, så er det fuldstændig ødelæggende. Hvad kan jeg sige, i de fleste tilfælde husker de ikke engang deres login.

Jeg udøste min sjæl, og nu til sagen.
Idéen om en beboer i Khabrov blev taget som grundlag mittel af denne artikel.
Essensen af ​​ideen er, at når en bruger logger på Windows, indtaster logon-scriptet de nødvendige oplysninger (tidspunkt og maskinnavn) i en bestemt attribut for brugerkontoen. Og når du logger ud af systemet, udføres et lignende logoff-script.

Jeg kunne godt lide selve ideen, men der var nogle ting, jeg ikke var tilfreds med i implementeringen.

  1. Gruppepolitik, som specificerer logon- og logon-scripts for brugere, gælder for hele domænet, så scripts vil køre på enhver maskine, som brugere logger på. Hvis du bruger terminalløsninger sammen med arbejdsstationer (f.eks. Microsoft RDS eller Citrix-produkter), vil denne tilgang være ubelejlig.
  2. Dataene indtastes i afdelingsattributten for den brugerkonto, som den gennemsnitlige bruger har skrivebeskyttet adgang til. Ud over brugerkontoattributten foretager scriptet også ændringer i afdelingsattributten for computerkontoen, som brugere som standard heller ikke kan ændre. For at løsningen skal fungere, foreslår forfatteren derfor at ændre standarderne for sikkerhedsindstillinger for AD-objekter.
  3. Datoformatet afhænger af lokaliseringsindstillingerne på målmaskinen, så fra én maskine kan vi få 10. november 2018 14:53, og fra en anden 11/10/18 2:53

For at fjerne disse mangler blev følgende gjort.

  1. GPO er ikke knyttet til et domæne, men til en OU med maskiner (jeg adskiller brugere og maskiner i forskellige OU'er og rådgiver andre). Desuden for loopback-politikbehandlingstilstand tilstand er indstillet fusionere.
  2. Scriptet vil kun skrive data til brugerkontoen i attributten INFO, som brugeren kan ændre selvstændigt for sin konto.
  3. Ændrede det stykke kode, der genererer attributværdien

Nu ser scripts sådan ud:
SaveLogonInfoToAdUserAttrib.vbs

On Error Resume Next
Set wshShell = CreateObject("WScript.Shell")
strComputerName = wshShell.ExpandEnvironmentStrings("%COMPUTERNAME%")
Set adsinfo = CreateObject("ADSystemInfo")
Set oUser = GetObject("LDAP://" & adsinfo.UserName)
strMonth = Month(Now())
If Len(strMonth) < 2 then
  strMonth = "0" & strMonth
End If
strDay = Day(Now())
If Len(strDay) < 2 then
  strDay = "0" & strDay
End If
strTime = FormatDateTime(Now(),vbLongTime)
If Len(strTime) < 8 then
  strTime = "0" & strTime
End If
strTimeStamp = Year(Now()) & "/" & strMonth & "/" & strDay & " " & strTime
oUser.put "info", strTimeStamp & " <logon>" & " @ " & strComputerName
oUser.Setinfo

SaveLogoffInfoToAdUserAttrib.vbs

On Error Resume Next
Set wshShell = CreateObject("WScript.Shell")
strComputerName = wshShell.ExpandEnvironmentStrings("%COMPUTERNAME%")
Set adsinfo = CreateObject("ADSystemInfo")
Set oUser = GetObject("LDAP://" & adsinfo.UserName)
strMonth = Month(Now())
If Len(strMonth) < 2 then
  strMonth = "0" & strMonth
End If
strDay = Day(Now())
If Len(strDay) < 2 then
  strDay = "0" & strDay
End If
strTime = FormatDateTime(Now(),vbLongTime)
If Len(strTime) < 8 then
  strTime = "0" & strTime
End If
strTimeStamp = Year(Now()) & "/" & strMonth & "/" & strDay & " " & strTime
oUser.put "info", strTimeStamp & " <logoff>" & " @ " & strComputerName
oUser.Setinfo

Den, der er den første til at finde alle forskellene mellem Logon- og Logoff-scripts, vil få et plus for karma. 🙂
For at få visuel information blev følgende lille PS-script også oprettet:
Get-UsersByPCsInfo.ps1

$OU = "OU=MyUsers,DC=mydomain,DC=com"
Get-ADUser -SearchBase $OU -Properties * -Filter * | Select-Object DisplayName, SamAccountName, info | Sort DisplayName | Out-GridView -Title "Информация по логонам" -Wait

I alt er alt konfigureret en-to-tre:

  1. opret en GPO med de nødvendige indstillinger og link den til afdelingen med brugerarbejdsstationer:
    Windows: find ud af, hvem der er logget ind hvor
  2. lad os tage te (hvis AD har et stort antal brugere, så har du brug for en masse te :)
  3. kør PS-scriptet og få resultatet:
    Windows: find ud af, hvem der er logget ind hvor
    Øverst i vinduet er der et praktisk filter, hvor du kan vælge data baseret på værdierne af et eller flere felter. Ved at klikke på tabelkolonner sorteres poster efter værdierne i de tilsvarende felter.

Vi kan smukt "pakke" vores løsning.
Windows: find ud af, hvem der er logget ind hvor
For at gøre dette tilføjer vi en genvej til at starte scriptet for tekniske supportspecialister, som vil have noget som dette i "objekt"-feltet:
powershell.exe -NoLogo -ExecutionPolicy Bypass -File "servershareScriptsGet-UsersByPCsInfo.ps1"

Hvis der er mange tekniske supportmedarbejdere, kan du distribuere en genvej vha GP forlængelse.

Et par sidste kommentarer.

  • Active Directory-modulet til PowerShell skal installeres på den maskine, hvorfra PS-scriptet startes (for at gøre dette skal du blot tilføje AD-administrationsværktøjer i Windows-komponenter).
  • Som standard kan brugeren ikke redigere de fleste af attributterne på sin konto. Husk dette, hvis du beslutter dig for at bruge en anden egenskab end INFO.
  • Informer alle involverede kolleger, hvilken egenskab du vil bruge. For eksempel det samme INFO bruges til interaktivt at tilføje noter til en brugers postkasse i Exchange Server-administrationspanelet, og nogen kan nemt overskrive det, eller blive ked af det, når de oplysninger, de tilføjede, overskrives af dit script.
  • Hvis du har flere Active Directory-websteder, skal du tage højde for replikeringsforsinkelser. Hvis du f.eks. ønsker at få opdateret information om brugere fra AD-sted A og køre scriptet fra en maskine fra AD-sted B, kan du gøre dette:
    Get-ADUser -Server DCfromSiteA -SearchBase $OU -Properties * -Filter * | Select-Object DisplayName, SamAccountName, info | Sort DisplayName | Out-GridView -Title "Информация по логонам" -Wait

    DCfraSiteA — navnet på domænecontrolleren for websted A (som standard forbinder Get-AdUser cmdlet'en til den nærmeste domænecontroller)

Windows: find ud af, hvem der er logget ind hvor

Billedkilde

Jeg ville være taknemmelig, hvis du ville deltage i nedenstående korte undersøgelse.

Kun registrerede brugere kan deltage i undersøgelsen. Log ind, Vær venlig.

Hvad bruger du?

  • bginfo, Desktop info osv. (freeware)

  • betalte analoger af bginfo

  • Jeg vil gøre det som i artiklen

  • ikke relevant, pga Jeg bruger VDI/RDS osv.

  • Jeg bruger ikke noget endnu, men jeg overvejer det

  • Jeg behøver ikke at indsamle sådanne data

  • andet (del i kommentarerne)

112 brugere stemte. 39 brugere undlod at stemme.

Kilde: www.habr.com

Tilføj en kommentar