Windows: ugotovite, kdo je kje prijavljen

Windows: ugotovite, kdo je kje prijavljen
- Oh, nič mi ne uspe, pomagajte!
- Ne skrbi, zdaj bomo vse popravili. Dajte ime svojemu računalniku ...
(klasike žanra od klicev do tehnične podpore)

Dobro je, če imate orodje a la BgInfo ali vaši uporabniki poznajo bližnjico Windows+Pause/Break in vedo, kako jo pritisniti. Obstajajo celo redki primerki, ki so se uspeli naučiti imena svojega avtomobila. Pogosto pa ima klicatelj poleg svoje glavne težave še drugo težavo: ugotoviti ime/IP naslov računalnika. In pogosto potrebuje veliko več časa, da rešimo to drugo težavo kot prvo (in le zamenjati ste morali ozadje ali vrniti manjkajočo bližnjico :).
Ampak veliko lepše je slišati nekaj takega:
- Tatjana Sergejevna, ne skrbi, že se povezujem ...


In za to ne potrebujete veliko.
Strokovnjak za tehnično podporo si mora samo zapomniti imena strojev in kdo dela za katerega.
Preden opišem rešitev, ki jo trenutno uporabljamo, si bom na kratko ogledal še druge možnosti, da jih bom lahko do konca kritiziral in pojasnil svojo izbiro.

  1. BgInfo, Informacije o namizju in podobni. Če je denarja veliko, so plačani. Bistvo je, da so na namizju prikazane tehnične informacije: ime stroja, naslov IP, prijava itd. V Desktop Info lahko celo grafe učinkovitosti stisnete na polovico zaslona.
    Ni mi všeč, da mora na primer za isti Bginfo uporabnik minimizirati okna, da vidi potrebne podatke. S kolegi smo večkrat opazovali tudi na BgInfo značilen artefakt, ko je novo besedilo prikazano na vrhu starega.
    Nekatere uporabnike moti, da administratorji na obraz mačke, raztegnjene na namizju, narišejo zastrašujočo številko 192.168.0.123, kar pokvari estetiko slike ozadja, seveda pa je to strašno demotivirajoče in popolnoma ubije delovni duh. .
  2. Oznaka a la "Kdo sem jaz" (ne poskušajte dodati vprašaja na koncu :). Klasična bližnjica na namizju, za katero se skriva lična ali manj lična skripta, ki v obliki pogovornega okna prikaže potrebne informacije. Včasih namesto bližnjice na namizje postavijo sam skript, kar je IMHO slaba manira.
    Pomanjkljivost je, da morate za zagon bližnjice, tako kot v prvem primeru, pomanjšati vsa odprta okna (ne upoštevamo tistih ljubljencev sreče, ki imajo na delovnem stroju odprto edino okno pasijansa). Mimogrede, ali vaši uporabniki vedo, kje klikniti, da minimizirajo vsa okna? Tako je, prst v oko adminu.

Kapica tudi nakazuje, da imata oba zgoraj opisana načina glavno pomanjkljivost, da je pri pridobivanju informacij vpleten uporabnik, ki je lahko slep, neumen ali celo laže.
Ne bom razmišljal o možnosti povečanja računalniške pismenosti, ko vsi vedo, kje v sistemu Windows naj poiščejo ime svojega računalnika: to je plemenit namen, a zelo težak. In če ima podjetje fluktuacijo osebja, potem je to popolnoma propadlo. Kaj naj rečem, v večini primerov se sploh ne spomnijo svoje prijave.

Izlil sem svojo dušo, zdaj pa k bistvu.
Za osnovo je bila vzeta ideja o prebivalcu Khabrova Mittel z dne ta članek.
Bistvo ideje je, da ko se uporabnik prijavi v Windows, prijavni skript vnese potrebne podatke (čas in ime stroja) v določen atribut uporabniškega računa. In ko se odjavite iz sistema, se izvede podoben skript za odjavo.

Sama ideja mi je bila všeč, nekaj stvari pa nisem bil zadovoljen pri izvedbi.

  1. Pravilnik skupine, ki določa skripte za prijavo in odjavo za uporabnike, velja za celotno domeno, tako da se bodo skripti izvajali na katerem koli računalniku, v katerega se uporabniki prijavijo. Če uporabljate terminalske rešitve skupaj z delovnimi postajami (na primer izdelke Microsoft RDS ali Citrix), bo ta pristop neprijeten.
  2. Podatki se vnesejo v atribut Oddelek uporabniškega računa, do katerega ima povprečen uporabnik dostop samo za branje. Poleg atributa uporabniškega računa skript spreminja tudi atribut Oddelek računa računalnika, ki ga privzeto uporabniki prav tako ne morejo spreminjati. Da bi torej rešitev delovala, avtor predlaga spremembo standardov varnostnih nastavitev za objekte AD.
  3. Format datuma je odvisen od nastavitev lokalizacije na ciljnem računalniku, tako da lahko z enega stroja dobimo 10. november 2018 14:53, z drugega pa 11/10/18 2:53

Za odpravo teh pomanjkljivosti je bilo storjeno naslednje.

  1. GPO ni povezan z domeno, temveč z OU s stroji (ločim uporabnike in stroje v različne OU in svetujem drugim). Še več, za način obdelave politike povratne zanke način je nastavljen združiti.
  2. Skript bo samo zapisal podatke v uporabniški račun v atributu Informacije, ki jih lahko uporabnik samostojno spremeni za svoj račun.
  3. Spremenjen je del kode, ki generira vrednost atributa

Zdaj skripti izgledajo takole:
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

Kdor bo prvi našel vse razlike med Logon in Logoff skripto, bo dobil plus za karmo. 🙂
Tudi za pridobitev vizualnih informacij je bil ustvarjen naslednji majhen 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

Skupaj je vse konfigurirano ena-dva-tri:

  1. ustvarite GPO s potrebnimi nastavitvami in ga povežite z oddelkom z uporabniškimi delovnimi postajami:
    Windows: ugotovite, kdo je kje prijavljen
  2. gremo na čaj (če ima AD veliko uporabnikov, potem rabiš veliko čaja :)
  3. zaženite skript PS in dobite rezultat:
    Windows: ugotovite, kdo je kje prijavljen
    Na vrhu okna je priročen filter, v katerem lahko izberete podatke glede na vrednosti enega ali več polj. Klik na stolpce tabele razvrsti zapise po vrednostih ustreznih polj.

Svojo rešitev lahko lepo »zapakiramo«.
Windows: ugotovite, kdo je kje prijavljen
Da bi to naredili, bomo dodali bližnjico za zagon skripta za strokovnjake za tehnično podporo, ki bodo imeli nekaj takega v polju "predmet":
powershell.exe -NoLogo -ExecutionPolicy Bypass -File "servershareScriptsGet-UsersByPCsInfo.ps1"

Če je zaposlenih veliko tehnične podpore, lahko bližnjico razdelite z uporabo GPP.

Nekaj ​​končnih komentarjev.

  • Modul Active Directory za PowerShell mora biti nameščen na računalniku, s katerega se zažene skript PS (to storite tako, da v komponente Windows dodate skrbniška orodja AD).
  • Uporabnik privzeto ne more urejati večine atributov svojega računa. Upoštevajte to, če se odločite uporabiti atribut, ki ni Informacije.
  • Obvestite vse vpletene sodelavce, kateri atribut boste uporabili. Na primer enako Informacije se uporablja za interaktivno dodajanje opomb v uporabnikov nabiralnik v skrbniški plošči strežnika Exchange Server in nekdo ga lahko zlahka prepiše ali postane žalosten, ko informacije, ki jih je dodal, prepiše vaš skript.
  • Če imate več spletnih mest Active Directory, upoštevajte zakasnitve podvajanja. Na primer, če želite pridobiti posodobljene informacije o uporabnikih z mesta AD A in zagnati skript iz računalnika z mesta AD B, lahko naredite to:
    Get-ADUser -Server DCfromSiteA -SearchBase $OU -Properties * -Filter * | Select-Object DisplayName, SamAccountName, info | Sort DisplayName | Out-GridView -Title "Информация по логонам" -Wait

    DCfromSiteA — ime krmilnika domene mesta A (privzeto se cmdlet Get-AdUser poveže z najbližjim krmilnikom domene)

Windows: ugotovite, kdo je kje prijavljen

Vir slike

Hvaležen bi vam bil, če bi izpolnili spodnjo kratko anketo.

V anketi lahko sodelujejo samo registrirani uporabniki. Prijaviti se, prosim.

Kaj uporabljate?

  • bginfo, informacije o namizju itd. (brezplačna programska oprema)

  • plačani analogi bginfo

  • Naredil bom kot v članku

  • ni relevantno, saj Uporabljam VDI/RDS itd.

  • Ne uporabljam še ničesar, ampak razmišljam o tem

  • Takih podatkov mi ni treba zbirati

  • drugo (deli v komentarjih)

Glasovalo je 112 uporabnikov. 39 uporabnikov se je vzdržalo.

Vir: www.habr.com

Dodaj komentar