Windows: zjistěte, kdo je kde přihlášen

Windows: zjistěte, kdo je kde přihlášen
- Oh, nic mi nefunguje, pomozte!
-Neboj, teď vše napravíme. Zadejte název počítače...
(klasika žánru od volání po technickou podporu)

Je dobré, pokud máte nástroj a la BgInfo nebo vaši uživatelé znají zkratku Windows+Pause/Break a vědí, jak ji stisknout. Existují dokonce vzácné exempláře, kterým se podařilo naučit jméno svého vozu. Často má ale volající kromě svého hlavního problému i druhý problém: zjistit jméno/IP adresu počítače. A řešení tohoto druhého problému často zabere mnohem více času než prvního (a stačilo jen změnit tapetu nebo vrátit chybějící zástupce :).
Ale je mnohem hezčí slyšet něco jako:
- Tatyano Sergeevno, nebojte se, už se připojuji...


A nepotřebujete k tomu mnoho.
Specialista technické podpory si musí zapamatovat pouze názvy strojů a zapamatovat si, kdo pro které pracuje.
Před popisem řešení, které aktuálně používáme, se krátce podívám na další možnosti, abych je mohl do puntíku vytknout a vysvětlit svou volbu.

  1. BgInfo, Informace o ploše a podobně. Pokud je peněz hodně, jsou placené. Jde o to, že na ploše se zobrazují technické informace: název stroje, IP adresa, přihlášení atd. V Informace o ploše můžete dokonce vtěsnat grafy výkonu na polovinu obrazovky.
    Nelíbí se mi, že například pro stejné Bginfo musí uživatel minimalizovat okna, aby viděl potřebná data. S mými kolegy jsme také více než jednou pozorovali BgInfo charakteristický artefakt, když se nad starým textem zobrazí nový text.
    Některým uživatelům vadí, že admini kreslí na obličej kočky natažené na ploše děsivou 192.168.0.123, která kazí estetiku obrázku na pozadí, a to je samozřejmě strašně demotivující a úplně to zabíjí pracovního ducha. .
  2. Štítek a la „Kdo jsem“ (nesnažte se k němu na konci přidat otazník :). Klasická zkratka na ploše, za kterou se skrývá úhledný či nepříliš úhledný skript zobrazující potřebné informace ve formě dialogového okna. Někdy místo zástupce dají na plochu samotný skript, což je IMHO neslušné chování.
    Nevýhodou je, že ke spuštění zkratky je jako v prvním případě potřeba minimalizovat všechna otevřená okna (nebereme v úvahu ty miláčky štěstěny, kteří mají na svém pracovním stroji otevřené jediné solitérní okno). Mimochodem, vědí vaši uživatelé, kam kliknout, aby minimalizovali všechna okna? Přesně tak, prst v oku admina.

Čepice také naznačuje, že oba výše popsané způsoby mají hlavní nevýhodu v tom, že se na získávání informací podílí uživatel, který může být slepý, hloupý nebo dokonce lhát.
Nebudu uvažovat o možnosti zvýšení počítačové gramotnosti, když každý ví, kde ve Windows hledat jméno svého stroje: je to ušlechtilá věc, ale velmi obtížná. A pokud má společnost fluktuaci zaměstnanců, pak je to úplně ruina. Co mohu říci, ve většině případů si ani nepamatují své přihlášení.

Vylil jsem si duši a teď k věci.
Jako základ byla vzata myšlenka obyvatele Khabrova střední z tento článek.
Podstatou myšlenky je, že když se uživatel přihlásí do Windows, přihlašovací skript zadá potřebné informace (čas a název stroje) do určitého atributu uživatelského účtu. A když se odhlásíte ze systému, spustí se podobný odhlašovací skript.

Samotný nápad se mi líbil, ale byly některé věci, se kterými jsem při realizaci nebyl spokojený.

  1. Zásady skupiny, které specifikují přihlašovací a odhlašovací skripty pro uživatele, platí pro celou doménu, takže skripty poběží na jakémkoli počítači, ke kterému se uživatelé přihlásí. Pokud používáte terminálová řešení spolu s pracovními stanicemi (například produkty Microsoft RDS nebo Citrix), bude tento přístup nepohodlný.
  2. Údaje se zadávají do atributu Oddělení uživatelského účtu, ke kterému má průměrný uživatel přístup pouze pro čtení. Kromě atributu uživatelského účtu skript také provádí změny atributu Oddělení účtu počítače, které ve výchozím nastavení uživatelé také nemohou změnit. Proto, aby řešení fungovalo, autor navrhuje změnit standardy nastavení zabezpečení pro objekty AD.
  3. Formát data závisí na nastavení lokalizace na cílovém počítači, takže z jednoho stroje můžeme získat 10. listopadu 2018 14:53 a z jiného 11 10:18

K odstranění těchto nedostatků bylo provedeno následující.

  1. GPO není propojeno s doménou, ale s OU se stroji (odděluji uživatele a stroje do různých OU a radím ostatním). Navíc pro režim zpracování zásad zpětné smyčky režim je nastaven spojit.
  2. Skript pouze zapíše data do uživatelského účtu v atributu Informace, kterou si uživatel může změnit nezávisle pro svůj účet.
  3. Změněna část kódu, která generuje hodnotu atributu

Nyní skripty vypadají 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

Kdo jako první najde všechny rozdíly mezi Logon a Logoff skripty, dostane plus za karmu. 🙂
Pro získání vizuálních informací byl také vytvořen následující malý PS skript:
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

Celkově je vše nakonfigurováno jedna-dva-tři:

  1. vytvořte GPO s potřebnými nastaveními a propojte jej s oddělením s uživatelskými pracovními stanicemi:
    Windows: zjistěte, kdo je kde přihlášen
  2. jdeme na čaj (pokud má AD velký počet uživatelů, pak potřebujete hodně čaje :)
  3. spusťte skript PS a získejte výsledek:
    Windows: zjistěte, kdo je kde přihlášen
    V horní části okna je pohodlný filtr, ve kterém můžete vybrat data na základě hodnot jednoho nebo více polí. Kliknutím na sloupce tabulky seřadí záznamy podle hodnot odpovídajících polí.

Naše řešení umíme krásně „zabalit“.
Windows: zjistěte, kdo je kde přihlášen
K tomu přidáme zkratku pro spuštění skriptu pro specialisty technické podpory, kteří budou mít v poli „objekt“ něco takového:
powershell.exe -NoLogo -ExecutionPolicy Bypass -File "servershareScriptsGet-UsersByPCsInfo.ps1"

Pokud existuje mnoho zaměstnanců technické podpory, můžete distribuovat zástupce pomocí NA TOM NEZÁLEŽÍ.

Několik poznámek na závěr.

  • Modul Active Directory pro PowerShell musí být nainstalován na počítači, ze kterého se skript PS spouští (k tomu stačí přidat nástroje pro správu AD v komponentách Windows).
  • Ve výchozím nastavení nemůže uživatel upravovat většinu atributů svého účtu. Mějte to na paměti, pokud se rozhodnete použít jiný atribut než Informace.
  • Informujte všechny zúčastněné kolegy, jaký atribut použijete. Například to samé Informace se používá k interaktivnímu přidávání poznámek do poštovní schránky uživatele na panelu administrátora Exchange Server a někdo je může snadno přepsat nebo být smutný, když jsou informace, které přidal, přepsány vaším skriptem.
  • Pokud máte více lokalit Active Directory, počítejte s prodlevou replikace. Chcete-li například získat aktuální informace o uživatelích z webu AD A a spustit skript ze stroje z webu AD B, můžete to udělat takto:
    Get-ADUser -Server DCfromSiteA -SearchBase $OU -Properties * -Filter * | Select-Object DisplayName, SamAccountName, info | Sort DisplayName | Out-GridView -Title "Информация по логонам" -Wait

    DCfromSiteA — název řadiče domény webu A (ve výchozím nastavení se rutina Get-AdUser připojuje k nejbližšímu řadiči domény)

Windows: zjistěte, kdo je kde přihlášen

Zdroj obrázku

Byl bych vděčný, kdybyste se mohli zúčastnit krátkého průzkumu níže.

Průzkumu se mohou zúčastnit pouze registrovaní uživatelé. Přihlásit se, prosím.

Co používáš?

  • bginfo, informace o ploše atd. (freeware)

  • placené analogy bginfo

  • Udělám to jako v článku

  • není relevantní, protože Používám VDI/RDS atd.

  • Zatím nic nepoužívám, ale uvažuji o tom

  • Nepotřebuji sbírat taková data

  • jiné (podělte se v komentářích)

Hlasovalo 112 uživatelů. 39 uživatelů se zdrželo hlasování.

Zdroj: www.habr.com

Přidat komentář