Windows: finn ut hvem som er pålogget hvor

Windows: finn ut hvem som er pålogget hvor
– Å, ingenting fungerer for meg, hjelp!
- Ikke bekymre deg, vi fikser alt nå. Gi datamaskinens navn...
(klassikere av sjangeren fra samtaler til teknisk støtte)

Det er bra hvis du har et verktøy a la BgInfo eller brukerne dine vet om snarveien Windows+Pause/Break og vet hvordan de skal trykke på den. Det er til og med sjeldne eksemplarer som har klart å lære navnet på bilen sin. Men ofte, i tillegg til hovedproblemet, har den som ringer et annet problem: å finne ut navnet/IP-adressen til datamaskinen. Og ofte tar det mye mer tid å løse dette andre problemet enn det første (og du trengte bare å endre bakgrunnen eller returnere den manglende snarveien :).
Men det er mye hyggeligere å høre noe som:
- Tatyana Sergeevna, ikke bekymre deg, jeg kobler allerede til ...


Og du trenger ikke mye for dette.
En teknisk støttespesialist trenger bare å huske navnene på maskinene og huske hvem som jobber for hvilke.
Før jeg beskriver løsningen vi bruker for øyeblikket, vil jeg kort se på andre alternativer slik at jeg kan kritisere dem til bunns og forklare valget mitt.

  1. BgInfo, Skrivebordsinformasjon o.l. Hvis det er mye penger, er det betalte. Poenget er at teknisk informasjon vises på skrivebordet: maskinnavn, IP-adresse, pålogging osv. I Desktop Info kan du til og med presse ytelsesgrafer inn på halve skjermen.
    Det jeg ikke liker er at for den samme Bginfo, for eksempel, må brukeren minimere vinduer for å se de nødvendige dataene. Mine kolleger og jeg har også observert mer enn én gang på BgInfo karakteristisk artefakt, når ny tekst vises på toppen av den gamle.
    Noen brukere irriterer seg over det faktum at administratorer tegner en skremmende 192.168.0.123 på ansiktet til en katt som er strukket ut på skrivebordet, og ødelegger estetikken til bakgrunnsbildet, og dette er selvfølgelig fryktelig demotiverende og dreper arbeidsånden fullstendig. .
  2. En etikett a la "Hvem er jeg" (ikke prøv å legge til et spørsmålstegn på slutten :). En klassisk snarvei på skrivebordet, bak som skjuler seg et pent eller ikke så pent skript som viser nødvendig informasjon i form av en dialogboks. Noen ganger, i stedet for en snarvei, legger de selve skriptet på skrivebordet, som IMHO er dårlig oppførsel.
    Ulempen er at for å starte snarveien, som i det første tilfellet, må du minimere alle åpne vinduer (vi tar ikke hensyn til de lykkeelskene som har det eneste kabalvinduet åpent på arbeidsmaskinen deres). Vet brukerne dine forresten hvor de skal klikke for å minimere alle vinduer? Det stemmer, en finger i øyet til administratoren.

Hetten antyder også at begge metodene beskrevet ovenfor har den største ulempen at brukeren er involvert i å innhente informasjon, som kan være blind, dum eller til og med lyve.
Jeg vil ikke vurdere muligheten for å øke datakunnskapen, når alle vet hvor i Windows de skal slå opp navnet på maskinen deres: det er en edel sak, men veldig vanskelig. Og hvis selskapet har personalomsetning, så er det helt ødeleggende. Hva kan jeg si, i de fleste tilfeller husker de ikke engang påloggingen deres.

Jeg utøste sjelen min, og nå til poenget.
Ideen om en Khabrov-beboer ble tatt som grunnlag medium av denne artikkelen.
Essensen av ideen er at når en bruker logger på Windows, legger påloggingsskriptet inn nødvendig informasjon (tid og maskinnavn) i en bestemt attributt til brukerkontoen. Og når du logger ut av systemet, blir et lignende utloggingsskript utført.

Jeg likte selve ideen, men det var noen ting jeg ikke var fornøyd med i implementeringen.

  1. Gruppepolicy, som spesifiserer påloggings- og avloggingsskript for brukere, gjelder for hele domenet, så skriptene vil kjøre på alle maskiner som brukere logger på. Hvis du bruker terminalløsninger sammen med arbeidsstasjoner (for eksempel Microsoft RDS eller Citrix-produkter), vil denne tilnærmingen være upraktisk.
  2. Dataene legges inn i avdelingsattributtet til brukerkontoen, som den gjennomsnittlige brukeren har skrivebeskyttet tilgang til. I tillegg til brukerkontoattributtet, gjør skriptet også endringer i avdelingsattributtet til datamaskinkontoen, som brukere som standard heller ikke kan endre. Derfor, for at løsningen skal fungere, foreslår forfatteren å endre standardene for sikkerhetsinnstillinger for AD-objekter.
  3. Datoformatet avhenger av lokaliseringsinnstillingene på målmaskinen, så fra én maskin kan vi få 10. november 2018 14:53, og fra en annen 11/10/18 2:53

For å eliminere disse manglene ble følgende gjort.

  1. GPO er ikke knyttet til et domene, men til en OU med maskiner (jeg skiller brukere og maskiner i forskjellige OUer og gir råd til andre). Dessuten for behandlingsmodus for loopback-policy modus er satt fusjonere.
  2. Skriptet vil kun skrive data til brukerkontoen i attributtet Mer info, som brukeren kan endre uavhengig for kontoen sin.
  3. Endret kodestykket som genererer attributtverdien

Nå ser skriptene slik ut:
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 som er den første som finner alle forskjellene mellom påloggings- og utloggingsskript vil få et pluss for karma. 🙂
For å få visuell informasjon ble også følgende lille PS-skript laget:
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

Totalt er alt konfigurert en-to-tre:

  1. opprett en GPO med de nødvendige innstillingene og koble den til avdelingen med brukerarbeidsstasjoner:
    Windows: finn ut hvem som er pålogget hvor
  2. la oss ta te (hvis AD har et stort antall brukere, så trenger du mye te :)
  3. kjør PS-skriptet og få resultatet:
    Windows: finn ut hvem som er pålogget hvor
    Øverst i vinduet er det et praktisk filter der du kan velge data basert på verdiene til ett eller flere felt. Ved å klikke på tabellkolonner sorteres postene etter verdiene til de tilsvarende feltene.

Vi kan vakkert "pakke" løsningen vår.
Windows: finn ut hvem som er pålogget hvor
For å gjøre dette, legger vi til en snarvei for å starte skriptet for teknisk støttespesialister, som vil ha noe sånt som dette i "objekt"-feltet:
powershell.exe -NoLogo -ExecutionPolicy Bypass -File "servershareScriptsGet-UsersByPCsInfo.ps1"

Hvis det er mange tekniske støtteansatte, kan du distribuere en snarvei ved hjelp av DET BETYR IKKE NOE.

Noen siste kommentarer.

  • Active Directory-modulen for PowerShell må installeres på maskinen som PS-skriptet startes fra (for å gjøre dette, legg til AD-administrasjonsverktøy i Windows-komponenter).
  • Som standard kan ikke brukeren redigere de fleste av attributtene til kontoen sin. Husk dette hvis du bestemmer deg for å bruke et annet attributt enn Mer info.
  • Informer alle involverte kolleger hvilken egenskap du vil bruke. For eksempel det samme Mer info brukes til interaktivt å legge til notater til en brukers postboks i Exchange Server-administrasjonspanelet, og noen kan enkelt overskrive det, eller bli trist når informasjonen de har lagt til overskrives av skriptet ditt.
  • Hvis du har flere Active Directory-områder, må du ta hensyn til replikeringsforsinkelser. Hvis du for eksempel ønsker å få oppdatert informasjon om brukere fra AD-side A, og kjøre skriptet fra en maskin fra AD-side B, kan du gjøre dette:
    Get-ADUser -Server DCfromSiteA -SearchBase $OU -Properties * -Filter * | Select-Object DisplayName, SamAccountName, info | Sort DisplayName | Out-GridView -Title "Информация по логонам" -Wait

    DCfraSiteA — navnet på domenekontrolleren til nettsted A (som standard kobles Get-AdUser cmdlet til nærmeste domenekontroller)

Windows: finn ut hvem som er pålogget hvor

Bildekilde

Jeg ville være takknemlig om du kunne svare på den korte undersøkelsen nedenfor.

Kun registrerte brukere kan delta i undersøkelsen. Logg inn, vær så snill.

Hva bruker du?

  • bginfo, skrivebordsinformasjon osv. (gratisvare)

  • betalte analoger av bginfo

  • Jeg gjør det som i artikkelen

  • ikke relevant, fordi Jeg bruker VDI/RDS osv.

  • Jeg bruker ikke noe enda, men jeg tenker på det

  • Jeg trenger ikke å samle inn slike data

  • annet (del i kommentarfeltet)

112 brukere stemte. 39 brukere avsto.

Kilde: www.habr.com

Legg til en kommentar