Windows: alamin kung sino ang naka-log in kung saan

Windows: alamin kung sino ang naka-log in kung saan
- Oh, walang gumagana para sa akin, tulong!
- Huwag mag-alala, aayusin namin ang lahat ngayon. Ibigay ang pangalan ng iyong computer...
(mga klasiko ng genre mula sa mga tawag hanggang sa teknikal na suporta)

Mabuti kung mayroon kang tool a la BgInfo o alam ng iyong mga user ang tungkol sa shortcut ng Windows+Pause/Break at alam kung paano ito pindutin. Mayroong kahit na mga bihirang specimen na nagawang malaman ang pangalan ng kanilang sasakyan. Ngunit kadalasan ang tumatawag, bilang karagdagan sa kanyang pangunahing problema, ay may pangalawa: alamin ang pangalan/IP address ng computer. At kadalasan ay nangangailangan ng mas maraming oras upang malutas ang pangalawang problemang ito kaysa sa una (at kailangan mo lang baguhin ang wallpaper o ibalik ang nawawalang shortcut :).
Ngunit mas masarap marinig ang isang bagay tulad ng:
- Tatyana Sergeevna, huwag mag-alala, kumokonekta na ako...


At hindi mo kailangan ng marami para dito.
Kailangan lang isaulo ng isang espesyalista sa teknikal na suporta ang mga pangalan ng mga makina at tandaan kung sino ang nagtatrabaho para sa kung saan.
Bago ilarawan ang solusyon na kasalukuyang ginagamit namin, titingnan ko sandali ang iba pang mga opsyon upang mapuna ko sila hanggang sa dulo at maipaliwanag ang aking pinili.

  1. BgInfo, Impormasyon sa Desktop at mga katulad nito. Kung maraming pera, may bayad. Ang punto ay ang teknikal na impormasyon ay ipinapakita sa desktop: pangalan ng makina, IP address, pag-login, atbp. Sa Desktop Info maaari mo ring i-squeeze ang mga performance graph sa kalahati ng screen.
    Ang hindi ko gusto ay para sa parehong Bginfo, halimbawa, kailangang i-minimize ng user ang mga bintana upang makita ang kinakailangang data. Ako at ang aking mga kasamahan ay nakapag-obserba din ng higit sa isang beses sa BgInfo katangiang artifact, kapag ang bagong teksto ay ipinapakita sa ibabaw ng luma.
    Ang ilang mga gumagamit ay naiinis sa katotohanan na ang mga admin ay gumuhit ng isang nakakatakot na 192.168.0.123 sa mukha ng isang pusa na nakaunat sa desktop, sinisira ang aesthetics ng larawan sa background, at, siyempre, ito ay lubhang nakakapagpapahina ng loob at ganap na pumapatay sa espiritu ng trabaho. .
  2. Isang label na "Sino ako" (huwag subukang magdagdag ng tandang pananong dito sa dulo :). Isang klasikong shortcut sa desktop, kung saan nagtatago ang isang maayos o hindi masyadong maayos na script na nagpapakita ng kinakailangang impormasyon sa anyo ng isang dialog box. Minsan, sa halip na shortcut, inilalagay nila ang script mismo sa desktop, na ang IMHO ay masamang ugali.
    Ang kawalan ay upang ilunsad ang shortcut, tulad ng sa unang kaso, kailangan mong i-minimize ang lahat ng mga bukas na bintana (hindi namin isinasaalang-alang ang mga darlings of fortune na may nag-iisang solitaire window na nakabukas sa kanilang work machine). Siyanga pala, alam ba ng iyong mga user kung saan magki-click para i-minimize ang lahat ng window? Tama, isang daliri sa mata ng admin.

Ang cap ay nagmumungkahi din na ang parehong mga pamamaraan na inilarawan sa itaas ay may pangunahing disbentaha na ang gumagamit ay kasangkot sa pagkuha ng impormasyon, na maaaring bulag, tanga, o kahit na nagsisinungaling.
Hindi ko isasaalang-alang ang opsyon ng pagtaas ng computer literacy, kapag alam ng lahat kung saan sa Windows hahanapin ang pangalan ng kanilang makina: ito ay isang marangal na dahilan, ngunit napakahirap. At kung ang kumpanya ay may turnover ng mga tauhan, kung gayon ito ay ganap na nasisira. Ano ang masasabi ko, sa karamihan ng mga kaso ay hindi nila naaalala ang kanilang pag-login.

Ibinuhos ko ang aking kaluluwa, at ngayon sa punto.
Ang ideya ng isang residente ng Khabrov ay kinuha bilang batayan Mittel ng ng artikulong ito.
Ang kakanyahan ng ideya ay kapag ang isang gumagamit ay nag-log in sa Windows, ang logon script ay nagpasok ng kinakailangang impormasyon (oras at pangalan ng makina) sa isang tiyak na katangian ng user account. At kapag nag-log out ka sa system, isang katulad na logoff script ang ipapatupad.

Nagustuhan ko ang ideya mismo, ngunit may ilang bagay na hindi ako nasisiyahan sa pagpapatupad.

  1. Ang patakaran ng grupo, na tumutukoy sa mga script ng logon at logoff para sa mga user, ay nalalapat sa buong domain, kaya ang mga script ay tatakbo sa anumang makina kung saan nag-log in ang mga user. Kung gagamit ka ng mga solusyon sa terminal kasama ng mga workstation (halimbawa, mga produkto ng Microsoft RDS o Citrix), magiging abala ang diskarteng ito.
  2. Ang data ay ipinasok sa katangian ng Department ng user account, kung saan ang karaniwang user ay may read-only na access. Bilang karagdagan sa attribute ng user account, gumagawa din ang script ng mga pagbabago sa attribute ng Department ng computer account, na hindi rin mababago ng mga user bilang default. Samakatuwid, para gumana ang solusyon, iminumungkahi ng may-akda na baguhin ang mga pamantayan ng mga setting ng seguridad para sa mga bagay na AD.
  3. Ang format ng petsa ay nakasalalay sa mga setting ng lokalisasyon sa target na makina, kaya mula sa isang makina ay makakakuha tayo ng 10 Nobyembre 2018 14:53, at mula sa isa pang 11/10/18 2:53 pm

Upang maalis ang mga pagkukulang na ito, ginawa ang mga sumusunod.

  1. Naka-link ang GPO hindi sa isang domain, ngunit sa isang OU na may mga machine (hinihiwalay ko ang mga user at machine sa iba't ibang OU at pinapayuhan ko ang iba). Bukod dito, para sa loopback policy processing mode nakatakda ang mode pagsamahin.
  2. Isusulat lang ng script ang data sa user account sa attribute Impormasyon, na maaaring baguhin ng user nang nakapag-iisa para sa kanyang account.
  3. Binago ang piraso ng code na bumubuo ng value ng attribute

Ngayon ang mga script ay ganito ang hitsura:
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

Kung sino ang unang makakahanap ng lahat ng pagkakaiba sa pagitan ng Logon at Logoff script ay makakakuha ng plus para sa karma. πŸ™‚
Gayundin, upang makakuha ng visual na impormasyon, ang sumusunod na maliit na PS script ay ginawa:
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

Sa kabuuan, ang lahat ay na-configure one-two-three:

  1. lumikha ng isang GPO na may mga kinakailangang setting at i-link ito sa departamento gamit ang mga workstation ng user:
    Windows: alamin kung sino ang naka-log in kung saan
  2. tara uminom ng tsaa (kung ang AD ay maraming gumagamit, kailangan mo ng maraming tsaa :)
  3. patakbuhin ang PS script at makuha ang resulta:
    Windows: alamin kung sino ang naka-log in kung saan
    Sa tuktok ng window mayroong isang maginhawang filter kung saan maaari kang pumili ng data batay sa mga halaga ng isa o higit pang mga patlang. Ang pag-click sa mga hanay ng talahanayan ay nag-uuri ng mga talaan ayon sa mga halaga ng kaukulang mga patlang.

Maganda naming "i-package" ang aming solusyon.
Windows: alamin kung sino ang naka-log in kung saan
Para magawa ito, magdaragdag kami ng shortcut para ilunsad ang script para sa mga espesyalista sa teknikal na suporta, na magkakaroon ng ganito sa field na "object":
powershell.exe -NoLogo -ExecutionPolicy Bypass -File "servershareScriptsGet-UsersByPCsInfo.ps1"

Kung maraming empleyado ng teknikal na suporta, maaari mong ipamahagi ang isang shortcut gamit WALANG KWENTA.

Ilang huling komento.

  • Ang module ng Active Directory para sa PowerShell ay dapat na naka-install sa makina kung saan inilunsad ang PS script (upang gawin ito, magdagdag lamang ng mga tool sa pangangasiwa ng AD sa mga bahagi ng Windows).
  • Bilang default, hindi maaaring i-edit ng user ang karamihan sa mga katangian ng kanyang account. Isaisip ito kung magpasya kang gumamit ng attribute maliban sa Impormasyon.
  • Ipaalam sa lahat ng kasamang kasamahan kung aling katangian ang iyong gagamitin. Halimbawa, pareho Impormasyon ay ginagamit upang interactive na magdagdag ng mga tala sa mailbox ng user sa Exchange Server admin panel at madaling ma-overwrite ito ng isang tao, o malungkot kapag na-overwrite ng iyong script ang impormasyong idinagdag nila.
  • Kung mayroon kang maramihang mga site ng Active Directory, pagkatapos ay gumawa ng mga allowance para sa mga pagkaantala sa pagtitiklop. Halimbawa, kung gusto mong makakuha ng up-to-date na impormasyon tungkol sa mga user mula sa AD site A, at patakbuhin ang script mula sa isang machine mula sa AD site B, magagawa mo ito:
    Get-ADUser -Server DCfromSiteA -SearchBase $OU -Properties * -Filter * | Select-Object DisplayName, SamAccountName, info | Sort DisplayName | Out-GridView -Title "Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΏΠΎ Π»ΠΎΠ³ΠΎΠ½Π°ΠΌ" -Wait

    DCfromSiteA β€” ang pangalan ng domain controller ng site A (bilang default, ang Get-AdUser cmdlet ay kumokonekta sa pinakamalapit na domain controller)

Windows: alamin kung sino ang naka-log in kung saan

Pinagmulan ng larawan

Magpapasalamat ako kung maaari mong kunin ang maikling survey sa ibaba.

Ang mga rehistradong user lamang ang maaaring lumahok sa survey. Mag-sign in, pakiusap

Ano ang ginagamit mo?

  • bginfo, impormasyon sa Desktop atbp. (freeware)

  • bayad na analogues ng bginfo

  • Gagawin ko ito tulad ng sa artikulo

  • hindi nauugnay, dahil Gumagamit ako ng VDI/RDS atbp.

  • Wala pa akong ginagamit, pero pinag-iisipan ko

  • Hindi ko kailangang mangolekta ng ganoong data

  • iba pa (ibahagi sa mga komento)

112 user ang bumoto. 39 na user ang umiwas.

Pinagmulan: www.habr.com

Magdagdag ng komento