— Oh, niets werkt, help me!
— Maak je geen zorgen, we lossen het zo op. Noem de naam van de computer…
(een klassieker uit de technische ondersteuning telefoontjes)
Het is handig als je een tool hebt zoals BgInfo of als je gebruikers weten dat ze de Windows+Pause/Break sneltoets kunnen gebruiken. Er zijn zelfs zeldzame gevallen die de naam van hun machine al hebben geleerd. Maar vaak komt er naast het hoofdprobleem van de beller ook een tweede probleem op, namelijk het achterhalen van de naam/IP-adres van de computer. En het oplossen van dat tweede probleem kost vaak veel meer tijd dan het eerste (en het enige wat nodig was, was om de achtergrond te wijzigen of een verdwenen snelkoppeling terug te halen :).
Het is veel prettiger om iets te horen als:
— Tatiana Sergeevna, maak je geen zorgen, ik verbind meteen...
En daarvoor is niet veel nodig.
Voor een technische ondersteuning specialist is het voldoende om de namen van de machines uit het hoofd te leren en te onthouden wie op welke werkt.
Voordat ik de oplossing beschrijf die we nu gebruiken, wil ik kort andere opties bespreken, om deze te bekritiseren uitleggen waarom ik voor deze heb gekozen.
- , en dergelijke. Als je voldoende geld hebt, zijn er ook betaalde versies. Het idee is dat technische informatie op het bureaublad wordt weergegeven: machine naam, IP-adres, inlognaam, etc. In Desktop Info kun je zelfs prestatiegrafieken op de helft van het scherm plaatsen.
Wat niet bevredigend is, is dat voor hetzelfde BgInfo bijvoorbeeld de gebruiker de vensters moet minimaliseren om de benodigde gegevens te zien. Ook hebben mijn collega's en ik vaak bij BgInfo geconstateerd , waarbij nieuwe tekst wordt weergegeven bovenop de oude.
Sommige gebruikers zijn gefrustreerd omdat beheerders een angstaanjagende 192.168.0.123 op de afbeelding van een uitgerekte kat op het bureaublad zetten, wat de esthetiek van de achtergrondafbeelding bederft, en dat demotiveert vreselijk en doodt volledig de werkstemming. - Een snelkoppeling zoals "Wie ben ik" (probeer er geen vraagteken achter te zetten :). Een klassieke snelkoppeling op het bureaublad, achter welke een netjes of niet zo netjes script verborgen zit dat de benodigde informatie in de vorm van een dialoogvenster weergeeft. Soms in plaats van een snelkoppeling op het bureaublad wordt het script zelf geplaatst, wat IMHO niet erg netjes is.
Het nadeel is dat je, net als bij de eerste optie, alle open vensters moet minimaliseren om het snelkoppelingspictogram te starten (we negeren de geluksvogels die maar één venster met een solitaire spel op hun werkcomputer hebben geopend). Overigens, weten je gebruikers waar ze moeten klikken om alle vensters te minimaliseren? Juist, met hun vinger in het oog van de beheerder.
De kapitein wijst er ook op dat bij beide hierboven beschreven methoden het belangrijkste nadeel is dat de gebruiker betrokken is bij het verkrijgen van informatie, en die kan zowel blind als dom zijn en in het algemeen ook liegen.
Ik zal de optie om de computerkennis te verhogen, waarbij iedereen weet waar ze in Windows de naam van hun machine moeten bekijken, niet bespreken: het is een nobel maar zeer moeilijk werk. En als er een hoge personeelsverloop in het bedrijf is, wordt het helemaal hopeloos. Wat wil je zeggen, in de meeste gevallen kennen ze zelfs hun eigen inlog niet.
Ik heb mijn ziel geuit, maar laten we nu ter zake komen.
De basis is het idee van een Habr-gebruiker. uit .
Het idee is dat wanneer de gebruiker in Windows inlogt, het logon-script de benodigde informatie (de tijd en de naam van de machine) in een specifiek attribuut van het gebruikersaccount invoert. En bij het uitloggen wordt een soortgelijk logoff-script uitgevoerd.
Ik vond het idee leuk, maar er was iets in de uitvoering dat me niet beviel.
- De groepspolicy, waarin logon- en logoff-scripts voor gebruikers zijn vastgelegd, wordt op het hele domein toegepast, dus de scripts zullen op elke machine worden uitgevoerd waar gebruikers inloggen. Als je naast werkstations ook terminaloplossingen gebruikt (bijvoorbeeld Microsoft RDS of Citrix-producten), zal deze aanpak onhandig zijn.
- De gegevens worden in het attribuut Department van het gebruikersaccount ingevoerd, waarop de gemiddelde gebruiker alleen lezen-toegang heeft. Naast het attribuut van het gebruikersaccount, brengt het script ook wijzigingen aan in het attribuut Department van het computeraccount, dat standaard ook niet door gebruikers kan worden gewijzigd. Daarom stelt de auteur voor om de standaard beveiligingsinstellingen voor AD-objecten te wijzigen zodat de oplossing werkt.
- Het datumnotatieformaat is afhankelijk van de locale instellingen op de eindmachine; daarom kunnen we van de ene machine 10 november 2018 14:53 krijgen, en van de andere 11/10/18 2:53 p.m.
Om deze nadelen te verhelpen, is het volgende gedaan.
- GPO linkt niet naar het domein, maar naar OU met machines (ik scheid gebruikers en machines in verschillende OU's en raad anderen hetzelfde aan). Daarbij is voor de modus ingesteld op merge.
- Het script zal gegevens alleen in het gebruikersrecord in het attribuut Info, dat de gebruiker zelf kan wijzigen voor zijn account.
- Een stuk code is gewijzigd dat de waarde van het attribuut genereert
Nu zien de scripts er als volgt uit:
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
Degene die als eerste alle verschillen tussen het logon- en logoff-script vindt, krijgt een pluspunt in karma. 🙂
Ook is er een klein PS-script gemaakt voor visuele informatie:
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 "Informatie over logins" -Wait
Kortom, alles kan in een handomdraai worden ingesteld:
- maak een GPO met de juiste instellingen en link deze aan de afdeling met de werkstations van de gebruikers:
- ga thee drinken (als AD een groot aantal gebruikers heeft, heb je veel thee nodig 🙂
- start de PS-script en ontvang het resultaat:

Bovenaan het venster is er een handige filter waarin je gegevens kunt filteren op waarde van een of meerdere velden. Klik op de kolommen van de tabel om de records te sorteren op waarden van de overeenkomstige velden.
We kunnen onze oplossing mooi "verpakken".

Daarom voegen we een snelkoppeling toe voor het uitvoeren van het script voor de ondersteuningsspecialisten, waarbij in het veld "object" iets als volgt staat:
powershell.exe -NoLogo -ExecutionPolicy Bypass -File "servershareScriptsGet-UsersByPCsInfo.ps1"
Als er veel supportmedewerkers zijn, kun je een snelkoppeling uitdelen met behulp van .
Een paar laatste opmerkingen.
- Op de machine vanwaar het PS-script wordt uitgevoerd, moet de Active Directory-module voor PowerShell zijn geïnstalleerd (het is voldoende om AD-beheerhulpmiddelen in Windows-functies toe te voegen).
- De meeste attributen van zijn account kan de gebruiker standaard niet bewerken. Houd hier rekening mee als je besluit een ander attribuut dan Info.
- Informeer alle betrokken collega's over welk attribuut je gaat gebruiken. Bijvoorbeeld, dezelfde Info wordt gebruikt voor interactieve toevoegingen van notities aan de gebruikersbox in de admin omgeving van Exchange Server en iemand kan het gemakkelijk wissen, of was teleurgesteld toen de informatie die hij had toegevoegd door je script werd overschreven.
- Als je meerdere Active Directory-sites hebt, houd dan rekening met replicatietijden. Als je bijvoorbeeld actuele informatie over gebruikers van AD-site A wilt, maar het script vanaf een machine van AD-site B uitvoert, kun je het als volgt doen:
Get-ADUser -Server DCfromSiteA -SearchBase $OU -Properties * -Filter * | Select-Object DisplayName, SamAccountName, info | Sort DisplayName | Out-GridView -Title "Informatie over logins" -Wait
DCfromSiteA — de naam van de domeincontroller van site A (standaard maakt de cmdlet Get-AdUser verbinding met de dichtstbijzijnde domeincontroller)

Ik zou het op prijs stellen als je de korte enquête hieronder zou invullen.
Alleen geregistreerde gebruikers kunnen deelnemen aan de enquête. , alstublieft.
Waar maak je gebruik van?
bginfo, Desktop info etc. (gratis software)
betaalde alternatieven voor bginfo
ik zal het doen zoals in het artikel
niet actueel, aangezien ik VDI/RDS etc. gebruik
ik gebruik voorlopig niets, maar ik overweeg het
ik hoef dergelijke gegevens niet te verzamelen
andere (deel in de comments)
112 gebruikers hebben gestemd. 39 gebruikers hebben zich onthouden.
Bron: habr.com

