Windows: saate teada, kes on kuhu sisse loginud

Windows: saate teada, kes on kuhu sisse loginud
- Oh, miski ei tööta minu jaoks, appi!
- Ärge muretsege, me parandame nüüd kõik. Andke oma arvuti nimi...
(žanri klassika alates kõnedest kuni tehnilise toeni)

On hea, kui teil on tööriist a la BgInfo või teie kasutajad teavad Windows+Pause/Break otseteed ja teavad, kuidas seda vajutada. On isegi haruldasi isendeid, kellel on õnnestunud oma auto nimi selgeks õppida. Kuid sageli on helistajal lisaks oma põhiprobleemile ka teine: arvuti nime/IP-aadressi väljaselgitamine. Ja sageli kulub selle teise probleemi lahendamiseks palju rohkem aega kui esimese (ja teil oli vaja lihtsalt taustapilti vahetada või puuduv otsetee tagastada :).
Aga palju toredam on kuulda midagi sellist:
- Tatjana Sergeevna, ärge muretsege, ma juba ühendan ...


Ja selleks pole palju vaja.
Tehnilise toe spetsialistil tuleb vaid masinate nimed pähe õppida ja meeles pidada, kes mille heaks töötab.
Enne hetkel kasutusel oleva lahenduse kirjeldamist vaatan põgusalt ka teisi võimalusi, et saaksin neid äärmuseni kritiseerida ja oma valikut selgitada.

  1. BgInfo, Töölaua teave ja muud taolist. Kui raha on palju, siis on ka tasulisi. Asi on selles, et töölauale kuvatakse tehniline teave: masina nimi, IP-aadress, sisselogimine jne. Töölauateabes saate jõudlusgraafikud isegi poolele ekraanile pigistada.
    Mulle ei meeldi see, et näiteks sama Bginfo puhul peab kasutaja vajalike andmete nägemiseks aknaid minimeerima. Ka mina ja mu kolleegid oleme BgInfos rohkem kui korra jälginud iseloomulik artefakt, kui uus tekst kuvatakse vana peal.
    Mõnda kasutajat ärritab tõsiasi, et administraatorid joonistavad töölauale sirutatud kassi näole hirmuäratava 192.168.0.123, mis rikub taustapildi esteetikat ning see on muidugi kohutavalt demotiveeriv ja tapab töövaimu täielikult. .
  2. Silt a la "Kes ma olen" (ärge proovige selle lõppu küsimärki lisada :). Klassikaline otsetee töölaual, mille taga peidab endas korralik või mitte nii korralik skript, mis kuvab vajaliku info dialoogiboksi kujul. Mõnikord panevad nad otsetee asemel skripti enda töölauale, mis IMHO on halvad kombed.
    Puuduseks on see, et otsetee käivitamiseks, nagu ka esimesel juhul, peate minimeerima kõik avatud aknad (me ei võta arvesse neid õnnearmasid, kelle töömasinal on avatud ainus pasjansi aken). Muide, kas teie kasutajad teavad, kuhu klõpsata kõigi akende minimeerimiseks? Täpselt nii, näpp adminnile silmas.

Kork viitab ka sellele, et mõlema ülalkirjeldatud meetodi peamine puudus on teabe hankimisega seotud kasutaja, kes võib olla pime, rumal või isegi valetada.
Ma ei kaalu arvutioskuse suurendamise võimalust, kui kõik teavad, kust Windowsis oma masina nime otsida: see on üllas eesmärk, kuid väga raske. Ja kui ettevõttel on kaadri voolavus, siis on see täiesti laastav. Mida ma võin öelda, enamikul juhtudel nad isegi ei mäleta oma sisselogimist.

Valasin hinge välja ja nüüd asja juurde.
Aluseks võeti Habrovi elaniku idee mittel kohta selle artikli.
Idee olemus seisneb selles, et kui kasutaja Windowsi sisse logib, sisestab sisselogimisskript vajaliku info (aja ja masina nimi) kasutajakonto teatud atribuuti. Ja kui logite süsteemist välja, käivitatakse sarnane väljalogimisskript.

Idee ise mulle meeldis, kuid teostuses oli asju, millega ma rahul ei olnud.

  1. Grupipoliitika, mis määrab kasutajatele sisse- ja väljalogimisskriptid, kehtib kogu domeenile, nii et skripte käitatakse kõigis masinates, kuhu kasutajad sisse logivad. Kui kasutate koos tööjaamadega terminalilahendusi (näiteks Microsofti RDS-i või Citrixi tooted), on see lähenemine ebamugav.
  2. Andmed sisestatakse kasutajakonto atribuudisse Osakond, millele tavakasutajal on kirjutuskaitstud juurdepääs. Lisaks kasutajakonto atribuudile teeb skript muudatusi ka arvutikonto atribuudis Department, mida kasutajad vaikimisi samuti muuta ei saa. Seetõttu soovitab autor lahenduse toimimiseks muuta AD-objektide turvaseadete standardeid.
  3. Kuupäeva formaat sõltub sihtmasina lokaliseerimisseadetest, nii et ühest masinast saame 10. november 2018 14:53 ja teisest 11/10/18 2:53

Nende puuduste kõrvaldamiseks tehti järgmist.

  1. GPO on seotud mitte domeeniga, vaid masinatega OU-ga (eraldan kasutajad ja masinad erinevateks OU-deks ja nõustan teisi). Veelgi enam, selleks loopback poliitika töötlemise režiim režiim on seatud ühendada.
  2. Skript kirjutab andmed ainult atribuudis olevale kasutajakontole Info, mida kasutaja saab oma konto jaoks iseseisvalt muuta.
  3. Muudetud koodiosa, mis genereerib atribuudi väärtuse

Nüüd näevad skriptid välja sellised:
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

Kes leiab esimesena kõik sisselogimis- ja väljalogimisskriptide erinevused, saab karma plussi. 🙂
Visuaalse teabe saamiseks loodi ka järgmine väike 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

Kokku on kõik konfigureeritud üks-kaks-kolm:

  1. looge vajalike sätetega GPO ja linkige see kasutaja tööjaamadega osakonnaga:
    Windows: saate teada, kes on kuhu sisse loginud
  2. lähme jooma teed (kui AD-l on palju kasutajaid, siis on palju teed vaja :)
  3. käivitage PS-skript ja saate tulemuse:
    Windows: saate teada, kes on kuhu sisse loginud
    Akna ülaosas on mugav filter, milles saate valida ühe või mitme välja väärtuste põhjal andmeid. Tabeli veergudel klõpsates sorteeritakse kirjed vastavate väljade väärtuste järgi.

Saame oma lahenduse kaunilt “pakendada”.
Windows: saate teada, kes on kuhu sisse loginud
Selleks lisame otsetee skripti käivitamiseks tehnilise toe spetsialistidele, kellel on väljal "objekt" midagi sellist:
powershell.exe -NoLogo -ExecutionPolicy Bypass -File "servershareScriptsGet-UsersByPCsInfo.ps1"

Kui tehnilise toe töötajaid on palju, saate otsetee levitada GP laiendus.

Mõned viimased kommentaarid.

  • PowerShelli Active Directory moodul peab olema installitud masinasse, millest PS-skript käivitatakse (selleks lisage Windowsi komponentidesse lihtsalt AD haldustööriistad).
  • Vaikimisi ei saa kasutaja enamikku oma konto atribuute redigeerida. Pidage seda meeles, kui otsustate kasutada muud atribuuti kui Info.
  • Teavitage kõiki kaasatud kolleege, millist atribuuti te kasutate. Näiteks sama Info kasutatakse Exchange Serveri administraatoripaneelil kasutaja postkasti interaktiivseks märkmete lisamiseks ja keegi saab selle hõlpsalt üle kirjutada või kurvastada, kui teie skript kirjutab nende lisatud teabe üle.
  • Kui teil on mitu Active Directory saiti, võtke arvesse replikatsiooni viivitusi. Näiteks kui soovite saada ajakohast teavet kasutajate kohta AD saidilt A ja käivitada skripti AD saidi B masinast, saate teha järgmist.
    Get-ADUser -Server DCfromSiteA -SearchBase $OU -Properties * -Filter * | Select-Object DisplayName, SamAccountName, info | Sort DisplayName | Out-GridView -Title "Информация по логонам" -Wait

    DC saidiltA — saidi A domeenikontrolleri nimi (vaikimisi loob Get-AdUser cmdlet ühenduse lähima domeenikontrolleriga)

Windows: saate teada, kes on kuhu sisse loginud

Pildi allikas

Oleksin tänulik, kui osaleksite allolevas lühikeses küsitluses.

Küsitluses saavad osaleda ainult registreerunud kasutajad. Logi sissepalun.

Mida sa kasutad?

  • bginfo, töölauateave jne. (vabavara)

  • bginfo tasulised analoogid

  • Ma teen seda nii, nagu artiklis

  • pole asjakohane, sest Kasutan VDI/RDS vms.

  • Ma ei kasuta veel midagi, aga mõtlen selle peale

  • Ma ei pea selliseid andmeid koguma

  • muu (jaga kommentaarides)

112 kasutajat hääletas. 39 kasutajat jäi erapooletuks.

Allikas: www.habr.com

Lisa kommentaar