Windows: zistite, kto je kde prihlásený

Windows: zistite, kto je kde prihlásený
- Oh, nič mi nefunguje, pomôžte!
- Nebojte sa, všetko teraz napravíme. Dajte svojmu počítaču názov...
(klasika žánru od hovorov po technickú podporu)

Je dobré, ak máte nástroj a la BgInfo alebo vaši používatelia poznajú skratku Windows+Pause/Break a vedia, ako ju stlačiť. Existujú dokonca vzácne exempláre, ktorým sa podarilo naučiť meno svojho auta. Ale často má volajúci okrem svojho hlavného problému aj druhý problém: zistiť názov/IP adresu počítača. A často trvá vyriešenie tohto druhého problému oveľa viac času ako prvého (a stačilo vám zmeniť tapetu alebo vrátiť chýbajúcu skratku :).
Ale je oveľa krajšie počuť niečo ako:
- Tatyana Sergeevna, nebojte sa, už sa pripájam...


A nepotrebujete na to veľa.
Špecialistovi technickej podpory stačí zapamätať si názvy strojov a pamätať si, kto pre ktorý pracuje.
Pred popisom riešenia, ktoré momentálne používame, sa v krátkosti pozriem na ďalšie možnosti, aby som ich mohol do bodky vytknúť a vysvetliť svoj výber.

  1. BgInfo, Informácie o pracovnej ploche a podobne. Ak je veľa peňazí, sú platené. Ide o to, že na ploche sa zobrazujú technické informácie: názov počítača, IP adresa, prihlásenie atď. V informáciách o pracovnej ploche môžete dokonca stlačiť grafy výkonu na polovicu obrazovky.
    Nepáči sa mi, že napríklad pre rovnaké Bginfo musí používateľ minimalizovať okná, aby videl potrebné údaje. Moji kolegovia a ja sme tiež viac ako raz pozorovali BgInfo charakteristický artefakt, keď sa nový text zobrazí nad starým textom.
    Niektorým užívateľom vadí, že admini kreslia na tvár mačky natiahnutej na ploche odstrašujúcu 192.168.0.123, ktorá kazí estetiku obrázku na pozadí a to je, samozrejme, strašne demotivujúce a úplne zabíja pracovného ducha. .
  2. Označenie a la „Kto som“ (nesnažte sa k nemu pridať otáznik :). Klasická skratka na ploche, za ktorou sa skrýva úhľadný alebo nie práve úhľadný skript, ktorý zobrazuje potrebné informácie vo forme dialógového okna. Niekedy namiesto skratky dajú na plochu samotný skript, čo je IMHO neslušné správanie.
    Nevýhodou je, že na spustenie skratky, ako v prvom prípade, je potrebné minimalizovať všetky otvorené okná (neberieme do úvahy tých miláčikov šťastia, ktorí majú na svojom pracovnom stroji otvorené jediné okno solitér). Mimochodom, vedia vaši používatelia, kam kliknúť, aby minimalizovali všetky okná? Presne tak, prst v oku admina.

Čiapka tiež naznačuje, že obe vyššie opísané metódy majú hlavnú nevýhodu v tom, že na získavaní informácií sa podieľa používateľ, ktorý môže byť slepý, hlúpy alebo dokonca klamať.
Nebudem uvažovať o možnosti zvyšovania počítačovej gramotnosti, keď každý vie, kde vo Windowse hľadať názov svojho stroja: je to ušľachtilá vec, ale veľmi náročná. A ak má spoločnosť fluktuáciu zamestnancov, potom je to úplne skazené. Čo môžem povedať, vo väčšine prípadov si ani nepamätajú svoje prihlásenie.

Vylial som si dušu a teraz k veci.
Základom bola myšlienka obyvateľa Khabrova stredná z tento článok.
Podstatou myšlienky je, že keď sa používateľ prihlási do systému Windows, prihlasovací skript zadá potrebné informácie (čas a názov počítača) do určitého atribútu používateľského účtu. A keď sa odhlásite zo systému, spustí sa podobný odhlasovací skript.

Samotný nápad sa mi páčil, ale s niektorými vecami som pri realizácii nebol spokojný.

  1. Skupinová politika, ktorá špecifikuje prihlasovacie a odhlasovacie skripty pre používateľov, sa vzťahuje na celú doménu, takže skripty sa budú spúšťať na akomkoľvek počítači, do ktorého sa používatelia prihlásia. Ak používate terminálové riešenia spolu s pracovnými stanicami (napríklad produkty Microsoft RDS alebo Citrix), tento prístup bude nepohodlný.
  2. Údaje sa zadávajú do atribútu Oddelenie používateľského účtu, ku ktorému má bežný používateľ prístup len na čítanie. Okrem atribútu používateľského konta skript vykoná zmeny aj v atribúte Oddelenie konta počítača, ktoré štandardne používatelia tiež nemôžu zmeniť. Preto, aby riešenie fungovalo, autor navrhuje zmeniť štandardy nastavení zabezpečenia pre objekty AD.
  3. Formát dátumu závisí od nastavení lokalizácie na cieľovom stroji, takže z jedného stroja môžeme získať 10. november 2018 14:53 a z iného 11 10:18

Na odstránenie týchto nedostatkov sa urobilo nasledovné.

  1. GPO nie je prepojený s doménou, ale s OU so strojmi (oddeľujem používateľov a stroje do rôznych OU a radím ostatným). Navyše pre režim spracovania politiky spätnej slučky režim je nastavený spojiť.
  2. Skript zapíše údaje iba do používateľského účtu v atribúte Info, ktoré si používateľ môže zmeniť nezávisle pre svoj účet.
  3. Zmenila sa časť kódu, ktorá generuje hodnotu atribútu

Teraz skripty vyzerajú takto:
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

Kto ako prvý nájde všetky rozdiely medzi Logon a Logoff skriptami, dostane plus za karmu. 🙂
Na získanie vizuálnych informácií bol vytvorený aj nasledujúci malý skript PS:
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

Celkovo je všetko nakonfigurované raz-dva-tri:

  1. vytvorte GPO s potrebnými nastaveniami a prepojte ho s oddelením s používateľskými pracovnými stanicami:
    Windows: zistite, kto je kde prihlásený
  2. poďme na čaj (ak má AD veľký počet užívateľov, tak treba veľa čaju :)
  3. spustite skript PS a získajte výsledok:
    Windows: zistite, kto je kde prihlásený
    V hornej časti okna sa nachádza pohodlný filter, v ktorom si môžete vybrať údaje na základe hodnôt jedného alebo viacerých polí. Kliknutím na stĺpce tabuľky zoradíte záznamy podľa hodnôt príslušných polí.

Naše riešenie vieme krásne „zabaliť“.
Windows: zistite, kto je kde prihlásený
Na tento účel pridáme skratku na spustenie skriptu pre špecialistov technickej podpory, ktorí budú mať v poli „objekt“ niečo takéto:
powershell.exe -NoLogo -ExecutionPolicy Bypass -File "servershareScriptsGet-UsersByPCsInfo.ps1"

Ak existuje veľa zamestnancov technickej podpory, môžete použiť skratku TO NEZÁLEŽÍ.

Pár poznámok na záver.

  • Modul Active Directory pre PowerShell musí byť nainštalovaný na počítači, z ktorého sa spúšťa skript PS (na to stačí pridať nástroje na správu AD v komponentoch Windows).
  • Používateľ štandardne nemôže upravovať väčšinu atribútov svojho účtu. Majte to na pamäti, ak sa rozhodnete použiť iný atribút ako Info.
  • Informujte všetkých zúčastnených kolegov, ktorý atribút použijete. Napríklad to isté Info sa používa na interaktívne pridávanie poznámok do poštovej schránky používateľa na paneli správcu servera Exchange a niekto ich môže ľahko prepísať alebo byť smutný, keď informácie, ktoré pridal, prepíše váš skript.
  • Ak máte viacero lokalít Active Directory, počítajte s oneskoreniami replikácie. Ak chcete napríklad získať aktuálne informácie o používateľoch z lokality AD A a spustiť skript zo stroja z lokality AD B, môžete to urobiť takto:
    Get-ADUser -Server DCfromSiteA -SearchBase $OU -Properties * -Filter * | Select-Object DisplayName, SamAccountName, info | Sort DisplayName | Out-GridView -Title "Информация по логонам" -Wait

    DCfromSiteA — názov radiča domény lokality A (predvolene sa cmdlet Get-AdUser pripája k najbližšiemu radiču domény)

Windows: zistite, kto je kde prihlásený

Zdroj obrázka

Bol by som vďačný, keby ste sa mohli zúčastniť krátkeho prieskumu uvedeného nižšie.

Do prieskumu sa môžu zapojiť iba registrovaní užívatelia. Prihlásiť saProsím.

čo používaš?

  • bginfo, informácie o pracovnej ploche atď. (freeware)

  • platené analógy bginfo

  • Urobím to ako v článku

  • nie je relevantné, pretože Používam VDI/RDS atď.

  • Zatiaľ nič nepoužívam, ale uvažujem nad tým

  • Nepotrebujem zbierať takéto údaje

  • iné (podeľte sa v komentároch)

Hlasovalo 112 užívateľov. 39 užívateľov sa zdržalo hlasovania.

Zdroj: hab.com

Pridať komentár