Windows: megtudjuk, ki hol van bejelentkezve

Windows: megtudjuk, ki hol van bejelentkezve
— Ó, semmi sem működik, segítsen nekem!
— Ne aggódjon, most mindent megjavítunk. Mondja meg a számítógép nevét…
(a technikai támogatás hívásainak klasszikus esete)

Jó, ha van olyan eszköze, mint a BgInfo, vagy ha a felhasználói tudják a Windows+Pause/Break parancsikont és tudják használni. Vannak még olyan ritka esetek, akik megtanulták a gépük nevét. De gyakran a hívónak van egy második problémája is a fő probléma mellett: megtudni a számítógép nevét/IP-címét. És gyakran ennek a második problémának a megoldására sokkal több időt vesz igénybe, mint az elsőre (pedig csak a háttérképet kellett volna megváltoztatni vagy visszaállítani egy eltűnt parancsikont :).
De sokkal kellemesebb valami ilyesmit hallani:
— Tatyana Szergejevna, ne aggódjon, már csatlakozom...


Ehhez nem is kell sok.
A technikai támogató szakembernek elegendő csak megtanulnia a gépek neveit és megjegyeznie, ki mivel dolgozik.
A most használt megoldás ismertetése előtt röviden áttekintem a többi lehetőséget, hogy kritizáljam őket megmagyarázzam a választásomat.

  1. BgInfo, Desktop Info és az ehhez hasonlóak. Ha sok pénz van, léteznek fizetős megoldások is. A lényeg az, hogy a munkafelületre technikai információk kerülnek: gép neve, IP-cím, felhasználónév stb. A Desktop Info-ban akár teljesítménygrafikonokat is elhelyezhetünk a képernyő felén.
    Ami nem tetszik az az, hogy a BgInfo esetében például a felhasználónak össze kell csuknia az ablakokat, hogy láthassa a szükséges adatokat. Ezenkívül a kollégákkal többször is megfigyeltük a BgInfo karakteres artefaktusát, amikor az új szöveg felülírja a régit.
    Néhány felhasználót idegesít, hogy az adminisztrátorok egy ijesztő 192.168.0.123-at rajzolnak egy macska képre, amely a háttérkép esztétikáját tönkreteszi, és természetesen ez rendkívül demotiváló, és teljesen megöli a munkakedvet.
  2. Olyan parancsikon, mint «Ki vagyok?» (ne próbálja meg a végére kérdőjelet tenni :). Klasszikus parancsikon az asztalon, amely mögött egy rendezett vagy nem túlságosan rendezett szkript rejlik, amely szükséges információt jelenít meg párbeszédablak formájában. Néha a parancsikon helyett magát a szkriptet helyezik el az asztalon, ami IMO ízléstelen.
    A hátrány az, hogy a parancsikon elindításához, akárcsak az első esetben, össze kell vonni az összes megnyitott ablakot (a sors kedvenceit, akiknek a munkahelyi gépén egyetlen ablak van nyitva pasziánszra, nem vesszük figyelembe). Egyébként tudják a felhasználóid, hova kell kattintaniuk ahhoz, hogy az összes ablakot minimalizálják? Igen, a rendszergazda szemébe.

A kápitány azt is megjegyzi, hogy mindkét fent említett megoldás fő hátránya, hogy a felhasználó, aki részt vesz az információszerzésben, lehet, hogy kicsit látássérült, buta, és egyáltalán hazudhat.
A számítógépes tudás növelésének lehetőségét, amikor mindenki tudja, hol nézheti meg a gépe neveit Windowsban, nem fogom figyelembe venni: nemes ügy, de nagyon nehéz. Ha a cégnél fluktuáció van, akkor egyenesen reménytelen. Mit is mondjak, a legtöbb esetben még a saját bejelentkezésüket sem emlékeznek.

Kiöntöttem a lelkemet, most pedig térjünk a lényegre.
Alapul szolgált egy Habr felhasználó ötlete. mittel a ezen cikket.
A koncepció lényege, hogy amikor a felhasználó bejelentkezik Windowsba, a bejelentkezési szkript a szükséges információkat (idő és gép neve) egy adott attribútumba helyez hideg. A kilépéskor pedig egy hasonló kilépési szkript hajtódik végre.

Az ötlet tetszett, de a megvalósításban volt néhány zavaró tényező.

  1. A csoportházirend, amelyben a bejelentkezési és kilépő szkriptek szerepelnek a felhasználók számára, az egész domainek alkalmazható, ezért a szkriptek bármely gépen végrehajtódnak, ahova a felhasználók bejelentkeznek. Ha a munkaállomások mellett terminális megoldásokat is használnak (például Microsoft RDS vagy Citrix termékek), ez a megközelítés kényelmetlen lesz.
  2. Az adatokat a felhasználói fiók Department attribútumába helyezik, amelyhez a normál felhasználóknak csak olvasási jogosultságuk van. A felhasználói fiók attribútuma mellett a szkript a számítógép fiókjának Department attribútumát is módosítja, amelyet alapértelmezetten a felhasználók szintén nem tudnak megváltoztatni. Ezért annak érdekében, hogy a megoldás működjön, a szerző javasolja a biztonsági beállítások átállítását az AD objektumokhoz.
  3. A dátum formátuma a végső gép lokalizációs beállításaitól függ, ezért az egyik gépről 2018. november 10. 14:53-as értéket kaphatunk, míg a másikról 11/10/18 2:53 p.m. -et.

Ezeknek a hátrányoknak a kiküszöbölése érdekében a következőket tettük.

  1. A GPO nem a domain-hez, hanem az OU-hoz kapcsolódik, ahol a gépek vannak (felhasználókat és gépeket különböző OU-kba osztok, és ezt másoknak is javaslom). Ennek során loopback policy processing mode be van állítva a mód merge.
  2. A script csak a felhasználó attribútumába fogja beírni az adatokat Info, amelyet a felhasználó saját magának módosíthat a fiókjában.
  3. Megváltozott a kód egy darabja, amely az attribútum értékét generálja

Most a scriptjeink így néznek ki:
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 & " " & " @ " & 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 & " " & " @ " & strComputerName
oUser.Setinfo

Aki először megtalálja a különbségeket a bejelentkezési és a kijelentkezési szkript között, annak plusz pont jár a karmában. 🙂
Továbbá egy kis PS-skriptet is készítettünk a világos információk megszerzésére:
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 "Bejelentkezési információk" -Wait

Összességében az egész beállítása csak pár lépés:

  1. létrehozunk egy GPO-t a szükséges beállításokkal, és összekapcsoljuk azt a felhasználói munkaállomásokhoz tartozó részleggel:
    Windows: megtudjuk, ki hol van bejelentkezve
  2. elmegyünk teázni (ha sok felhasználó van az AD-ban, akkor sok tea kell 🙂
  3. futtatjuk a PS-skriptet, és megkapjuk az eredményt:
    Windows: megtudjuk, ki hol van bejelentkezve
    Az ablak tetején van egy kényelmes szűrő, amellyel az adatokat egy vagy több mező értéke alapján szűrhetjük. A táblázat oszlopaira kattintva rendezhetjük a bejegyzéseket a megfelelő mezők értékei szerint.

Szépen 'becsomagolhatjuk' a megoldásunkat.
Windows: megtudjuk, ki hol van bejelentkezve
Ehhez adjunk egy gyorsgombot a skript futtatásához a támogatási szakemberek számára, amelynek az 'objektum' mezőjében valami ilyesmi lesz:
powershell.exe -NoLogo -ExecutionPolicy Bypass -File "servershareScriptsGet-UsersByPCsInfo.ps1"

Ha sok technikai support munkatárs van, akkor egy parancsikont lehet kiosztani a GPP.

Néhány észrevétel a végére.

  • A gépen, ahonnan a PS-scripttel indul, telepítve kell lennie az Active Directory PowerShell-modulnak (ehhez elegendő az AD adminisztrációs eszközök telepítése a Windows komponensek között).
  • A felhasználó az alapértelmezett beállítás szerint a fiókjának nagyobb részét nem tudja szerkeszteni. Ezt vegye figyelembe, ha úgy dönt, hogy más attribútumot használ, mint a Info.
  • Tájékoztassa a megszólított kollégákat arról, hogy melyik attribútumot fogja használni. Például a következőt Info az az Exchange Server adminisztráló felületén a felhasználói fiókhoz megjegyzések interaktív hozzáadására használható, és valaki könnyen felülírhatja azt, vagy szomorú lehet, ha az általa hozzáadott információt felülírja a scriptje.
  • Ha több Active Directory webhellyel rendelkezik, vegye figyelembe a replikációs késéseket. Például, ha aktuális információkat szeretne kapni a felhasználókról az A webhely AD-jéről, de a scriptet a B webhely AD-jéről futtatja, akkor így teheti:
    Get-ADUser -Server DCfromSiteA -SearchBase $OU -Properties * -Filter * | Select-Object DisplayName, SamAccountName, info | Sort DisplayName | Out-GridView -Title "Logo információ" -Wait

    DCfromSiteA — az A webhely domain vezérlőjének neve (alapértelmezés szerint a Get-AdUser parancsmag a legközelebbi domain vezérlőhöz csatlakozik)

Windows: megtudjuk, ki hol van bejelentkezve

Kép forrása

Hálás lennék, ha kitöltené az alábbi rövid kérdőívet.

Csak a regisztrált felhasználók vehetnek részt a szavazáson. Kérem, jelentkezzen be., kérem.

Mineket használ?

  • bginfo, Desktop info stb. (ingyenes szoftver)

  • bginfo fizetős alternatívái

  • úgy fogom csinálni, ahogy a cikkben van

  • nem aktuális, mert VDI/RDS stb. használok

  • egyelőre nem használok semmit, de gondolkodom rajta

  • nem szükséges számomra, hogy ilyen adatokat gyűjtsek

  • más (ossza meg a megjegyzésekben)

112 felhasználó szavazott. 39 felhasználó tartózkodott.

Forrás: habr.com

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster