Windows: Finden Sie heraus, wer wo angemeldet ist

Windows: Finden Sie heraus, wer wo angemeldet ist
- Oh, bei mir funktioniert nichts, Hilfe!
- Keine Sorge, wir reparieren jetzt alles. Geben Sie Ihrem Computer einen Namen...
(Klassiker des Genres von Anrufen bis zum technischen Support)

Es ist gut, wenn Sie über ein Tool à la BgInfo verfügen oder Ihre Benutzer die Tastenkombination „Windows+Pause/Unterbrechung“ kennen und wissen, wie man sie drückt. Es gibt sogar seltene Exemplare, denen es gelungen ist, den Namen ihres Autos zu erfahren. Doch oft hat der Anrufer neben seinem Hauptproblem noch ein zweites: den Namen/die IP-Adresse des Computers herauszufinden. Und oft dauert es viel länger, dieses zweite Problem zu lösen als das erste (und Sie mussten nur das Hintergrundbild ändern oder die fehlende Verknüpfung zurückgeben :).
Aber es ist viel schöner, etwas zu hören wie:
- Tatyana Sergeevna, keine Sorge, ich verbinde mich schon ...


Und dafür braucht man nicht viel.
Ein technischer Support-Spezialist muss sich lediglich die Namen der Maschinen merken und sich merken, wer für welche arbeitet.
Bevor ich die Lösung beschreibe, die wir derzeit verwenden, werde ich kurz auf andere Optionen eingehen, um sie aufs Schärfste kritisieren und meine Wahl begründen zu können.

  1. BgInfo, Desktop Info und dergleichen. Wenn viel Geld da ist, gibt es bezahltes. Der Punkt ist, dass auf dem Desktop technische Informationen angezeigt werden: Maschinenname, IP-Adresse, Login usw. In Desktop Info können Sie Leistungsdiagramme sogar auf die Hälfte des Bildschirms komprimieren.
    Was mir nicht gefällt, ist, dass der Benutzer beispielsweise für dieselbe Bginfo Fenster minimieren muss, um die erforderlichen Daten zu sehen. Meine Kollegen und ich haben auch schon mehrfach bei BgInfo beobachtet charakteristisches Artefakt, wenn neuer Text über dem alten angezeigt wird.
    Einige Benutzer ärgern sich über die Tatsache, dass Administratoren eine erschreckende 192.168.0.123 auf das Gesicht einer auf dem Desktop ausgestreckten Katze zeichnen, was die Ästhetik des Hintergrundbilds beeinträchtigt, was natürlich furchtbar demotivierend ist und den Arbeitsgeist völlig tötet .
  2. Eine Beschriftung à la „Wer bin ich“ (versuchen Sie nicht, am Ende ein Fragezeichen hinzuzufügen :). Eine klassische Verknüpfung auf dem Desktop, hinter der sich ein schickes oder weniger schickes Skript verbirgt, das die notwendigen Informationen in Form eines Dialogfelds anzeigt. Manchmal legen sie statt einer Verknüpfung das Skript selbst auf dem Desktop ab, was meiner Meinung nach unhöflich ist.
    Der Nachteil besteht darin, dass Sie zum Starten der Verknüpfung, wie im ersten Fall, alle geöffneten Fenster minimieren müssen (wir berücksichtigen nicht die Glücksbringer, die das einzige Solitaire-Fenster auf ihrem Arbeitscomputer geöffnet haben). Wissen Ihre Benutzer übrigens, wo sie klicken müssen, um alle Fenster zu minimieren? Das ist richtig, ein Finger im Auge des Administrators.

Die Obergrenze deutet auch darauf hin, dass beide oben beschriebenen Methoden den Hauptnachteil haben, dass der Benutzer an der Informationsbeschaffung beteiligt ist, der möglicherweise blind, dumm oder sogar lügt.
Ich werde die Möglichkeit, die Computerkenntnisse zu verbessern, nicht in Betracht ziehen, wenn jeder weiß, wo er in Windows den Namen seines Computers nachschlagen kann: Es ist eine gute Sache, aber sehr schwierig. Und wenn das Unternehmen Personalfluktuation hat, dann ist das völlig ruinös. Was soll ich sagen, in den meisten Fällen erinnern sie sich nicht einmal an ihr Login.

Ich habe meine Seele ausgeschüttet, und jetzt kommt es zur Sache.
Als Grundlage diente die Idee eines Chabrow-Bewohners mittel von dieser Artikel.
Der Kern der Idee besteht darin, dass das Anmeldeskript beim Anmelden eines Benutzers bei Windows die erforderlichen Informationen (Uhrzeit und Computername) in ein bestimmtes Attribut des Benutzerkontos eingibt. Und wenn Sie sich vom System abmelden, wird ein ähnliches Abmeldeskript ausgeführt.

Die Idee an sich gefiel mir, aber bei der Umsetzung gab es einige Dinge, mit denen ich nicht zufrieden war.

  1. Gruppenrichtlinien, die An- und Abmeldeskripts für Benutzer festlegen, gelten für die gesamte Domäne, sodass die Skripts auf jedem Computer ausgeführt werden, auf dem sich Benutzer anmelden. Wenn Sie Terminallösungen zusammen mit Workstations verwenden (z. B. Microsoft RDS- oder Citrix-Produkte), ist dieser Ansatz unpraktisch.
  2. Die Daten werden in das Attribut „Abteilung“ des Benutzerkontos eingegeben, auf das der durchschnittliche Benutzer nur Lesezugriff hat. Zusätzlich zum Benutzerkontoattribut nimmt das Skript auch Änderungen am Abteilungsattribut des Computerkontos vor, das von Benutzern standardmäßig ebenfalls nicht geändert werden kann. Damit die Lösung funktioniert, schlägt der Autor daher vor, die Sicherheitseinstellungsstandards für AD-Objekte zu ändern.
  3. Das Datumsformat hängt von den Lokalisierungseinstellungen auf dem Zielcomputer ab, sodass wir auf einem Computer den 10. November 2018 um 14:53 Uhr und auf einem anderen den 11 um 10:18 Uhr erhalten können

Um diese Mängel zu beseitigen, wurde Folgendes getan.

  1. GPO ist nicht mit einer Domäne verknüpft, sondern mit einer Organisationseinheit mit Maschinen (ich unterteile Benutzer und Maschinen in verschiedene Organisationseinheiten und berate andere). Darüber hinaus z Verarbeitungsmodus der Loopback-Richtlinie Modus eingestellt ist fusionieren.
  2. Das Skript schreibt nur Daten in das Benutzerkonto im Attribut Info, die der Nutzer für seinen Account selbstständig ändern kann.
  3. Der Code, der den Attributwert generiert, wurde geändert

Jetzt sehen die Skripte so aus:
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

Wer als Erster alle Unterschiede zwischen Anmelde- und Abmeldeskripten findet, bekommt ein Plus an Karma. 🙂
Um visuelle Informationen zu erhalten, wurde außerdem das folgende kleine PS-Skript erstellt:
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

Insgesamt ist alles eins-zwei-drei konfiguriert:

  1. Erstellen Sie ein Gruppenrichtlinienobjekt mit den erforderlichen Einstellungen und verknüpfen Sie es mit der Abteilung mit Benutzerarbeitsplätzen:
    Windows: Finden Sie heraus, wer wo angemeldet ist
  2. Lass uns Tee trinken gehen (wenn AD viele Benutzer hat, dann brauchst du viel Tee :)
  3. Führen Sie das PS-Skript aus und erhalten Sie das Ergebnis:
    Windows: Finden Sie heraus, wer wo angemeldet ist
    Oben im Fenster befindet sich ein praktischer Filter, mit dem Sie Daten basierend auf den Werten eines oder mehrerer Felder auswählen können. Durch Klicken auf Tabellenspalten werden Datensätze nach den Werten der entsprechenden Felder sortiert.

Wir können unsere Lösung schön „verpacken“.
Windows: Finden Sie heraus, wer wo angemeldet ist
Dazu fügen wir eine Verknüpfung zum Starten des Skripts für technische Support-Spezialisten hinzu, die im Feld „Objekt“ etwa Folgendes haben:
powershell.exe -NoLogo -ExecutionPolicy Bypass -File "servershareScriptsGet-UsersByPCsInfo.ps1"

Wenn es viele Mitarbeiter des technischen Supports gibt, können Sie eine Verknüpfung über verteilen GPP.

Ein paar abschließende Kommentare.

  • Das Active Directory-Modul für PowerShell muss auf dem Computer installiert sein, von dem aus das PS-Skript gestartet wird (fügen Sie dazu einfach AD-Verwaltungstools in den Windows-Komponenten hinzu).
  • Standardmäßig kann der Benutzer die meisten Attribute seines Kontos nicht bearbeiten. Beachten Sie dies, wenn Sie sich für die Verwendung eines anderen Attributs als entscheiden Info.
  • Teilen Sie allen beteiligten Kollegen mit, welches Attribut Sie verwenden werden. Zum Beispiel das Gleiche Info wird verwendet, um interaktiv Notizen zum Postfach eines Benutzers im Exchange Server-Administrationsbereich hinzuzufügen, und jemand kann sie leicht überschreiben oder traurig sein, wenn die hinzugefügten Informationen von Ihrem Skript überschrieben werden.
  • Wenn Sie über mehrere Active Directory-Standorte verfügen, berücksichtigen Sie Replikationsverzögerungen. Wenn Sie beispielsweise aktuelle Informationen über Benutzer von AD-Site A erhalten und das Skript von einem Computer von AD-Site B ausführen möchten, können Sie Folgendes tun:
    Get-ADUser -Server DCfromSiteA -SearchBase $OU -Properties * -Filter * | Select-Object DisplayName, SamAccountName, info | Sort DisplayName | Out-GridView -Title "Информация по логонам" -Wait

    DCfromSiteA – der Name des Domänencontrollers von Standort A (standardmäßig stellt das Cmdlet Get-AdUser eine Verbindung zum nächstgelegenen Domänencontroller her)

Windows: Finden Sie heraus, wer wo angemeldet ist

Bildquelle

Ich wäre Ihnen dankbar, wenn Sie an der folgenden kurzen Umfrage teilnehmen könnten.

An der Umfrage können nur registrierte Benutzer teilnehmen. Einloggenbitte.

Was benutzt du?

  • bginfo, Desktop-Info usw. (Freeware)

  • kostenpflichtige Analoga von bginfo

  • Ich werde es wie im Artikel machen

  • nicht relevant, weil Ich verwende VDI/RDS usw.

  • Ich benutze noch nichts, aber ich denke darüber nach

  • Ich muss solche Daten nicht sammeln

  • Sonstiges (in den Kommentaren teilen)

112 Benutzer haben abgestimmt. 39 Benutzer enthielten sich der Stimme.

Source: habr.com

Kommentar hinzufügen