{"id":502074,"date":"2025-07-30T13:15:08","date_gmt":"2025-07-30T13:15:08","guid":{"rendered":"https:\/\/www.ninjaone.com\/?post_type=script_hub&#038;p=502074"},"modified":"2025-07-30T13:15:08","modified_gmt":"2025-07-30T13:15:08","slug":"verlauf-der-benutzeranmeldung-anzeigen-powershell","status":"publish","type":"script_hub","link":"https:\/\/www.ninjaone.com\/de\/script-hub\/verlauf-der-benutzeranmeldung-anzeigen-powershell\/","title":{"rendered":"Anzeigen des Benutzeranmeldungsverlaufs mit PowerShell"},"content":{"rendered":"<p>PowerShell-Skripte spielen eine unsch\u00e4tzbare Rolle f\u00fcr den IT-Betrieb und die Sicherheit, indem sie Aufgaben automatisieren und wichtige Informationen f\u00fcr die Analyse extrahieren. Heute werden wir uns mit einem Skript befassen, mit dem Sie <strong>den Verlauf der Benutzeranmeldung anzeigen k\u00f6nnen<\/strong>, eine wichtige Funktion f\u00fcr die Pr\u00fcfung und \u00dcberwachung des Systemzugriffs.<\/p>\n<h2>Kontext<\/h2>\n<p>Zugriffsprotokolle sind eine Goldgrube f\u00fcr IT-Expert:innen. Sie helfen dabei, die Systemnutzung zu \u00fcberwachen, unbefugten Zugriff zu erkennen und die Verantwortlichkeit zu wahren. Das mitgelieferte Skript holt Ereignisse zum Starten und Beenden von Benutzersitzungen ab, und erm\u00f6glicht dadurch die Erstellung eines Datensatzes, der f\u00fcr jede robuste IT-Sicherheitsstrategie wesentlich ist. Durch den Ausschluss von Systemkonten und die Konzentration auf echte Benutzer:innen wird ein sauberer und \u00fcbersichtlicher Verlauf der Benutzerzugriffe erstellt, der das Leben von IT-Expert:innen und Managed Service Providern (MSPs) einfacher und effizienter macht.<\/p>\n<h2>Das Skript<\/h2>\n<p><div class=\"button-wrap orange-button \"><a href=\"#disable-fast-startup\" data-js=\"button-script-cta\" class=\"button script-cta\" data-js=\"script-cta\"  data-modal=\"249406\" >Skript per Mail erhalten<\/a><\/div><br \/>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"powershell\">#Requires -Version 5.1\r\n\r\n&lt;#\r\n.SYNOPSIS\r\n    This will return user session start and stop events.\r\n.DESCRIPTION\r\n    This will return user session start and stop events. Excluding system accounts.\r\n.EXAMPLE\r\n    No params needed\r\n    Returns all login events for all users.\r\n.EXAMPLE\r\n     -UserName \"Fred\"\r\n    Returns all user login events of the user Fred.\r\n.EXAMPLE\r\n     -Days 7\r\n    Returns the last 7 days of login events for all users.\r\n.EXAMPLE\r\n     -Days 7 -UserName \"Fred\"\r\n    Returns the last 7 days of login events for the user Fred.\r\n.EXAMPLE\r\n    PS C:&gt; Get-User-Login-History.ps1 -Days 7 -UserName \"Fred\"\r\n    Returns the last 7 days of login events for the user Fred.\r\n.NOTES\r\n    Minimum OS Architecture Supported: Windows 10, Windows Server 2016\r\n    Release Notes:\r\n    Initial Release\r\n.OUTPUTS\r\n    Time                  Event        User  ID\r\n    ----                  -----        ----  --\r\n    10\/7\/2021 3:51:48 PM  SessionStop  User1 4634\r\n    10\/7\/2021 3:51:48 PM  SessionStart User1 4624\r\n.COMPONENT\r\n    ManageUsers\r\nBy using this script, you indicate your acceptance of the following legal terms as well as our Terms of Use at https:\/\/www.ninjaone.com\/terms-of-use.\r\n    Ownership Rights: NinjaOne owns and will continue to own all right, title, and interest in and to the script (including the copyright). NinjaOne is giving you a limited license to use the script in accordance with these legal terms. \r\n    Use Limitation: You may only use the script for your legitimate personal or internal business purposes, and you may not share the script with another party. \r\n    Republication Prohibition: Under no circumstances are you permitted to re-publish the script in any script library or website belonging to or under the control of any other software provider. \r\n    Warranty Disclaimer: The script is provided \u201cas is\u201d and \u201cas available\u201d, without warranty of any kind. NinjaOne makes no promise or guarantee that the script will be free from defects or that it will meet your specific needs or expectations. \r\n    Assumption of Risk: Your use of the script is at your own risk. You acknowledge that there are certain inherent risks in using the script, and you understand and assume each of those risks. \r\n    Waiver and Release: You will not hold NinjaOne responsible for any adverse or unintended consequences resulting from your use of the script, and you waive any legal or equitable rights or remedies you may have against NinjaOne relating to your use of the script. \r\n    EULA: If you are a NinjaOne customer, your use of the script is subject to the End User License Agreement applicable to you (EULA).\r\n#&gt;\r\n\r\n[CmdletBinding()]\r\nparam (\r\n    # Specify one user\r\n    [Parameter(Mandatory = $false)]\r\n    [String]\r\n    $UserName,\r\n    # How far back in days you want to search, this is in 24 hour increments from the time it executes\r\n    [Parameter(Mandatory = $false)]\r\n    [int]\r\n    $Days\r\n)\r\n\r\nbegin {\r\n    function Test-IsElevated {\r\n        $id = [System.Security.Principal.WindowsIdentity]::GetCurrent()\r\n        $p = New-Object System.Security.Principal.WindowsPrincipal($id)\r\n        if ($p.IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator))\r\n        { Write-Output $true }\r\n        else\r\n        { Write-Output $false }\r\n    }\r\n\r\n    # System accounts that we don't want\r\n    $SystemUsers = @(\r\n        \"SYSTEM\"\r\n        \"NETWORK SERVICE\"\r\n        \"LOCAL SERVICE\"\r\n    )\r\n    # Filter for only getting session start and stop events from Security event log\r\n    $FilterHashtable = @{\r\n        LogName = \"Security\";\r\n        id      = 4634, 4624\r\n    }\r\n    # If Days was specified then add this parameter\r\n    if ($Days) {\r\n        $FilterHashtable.Add(\"EndTime\", (Get-Date).AddDays(-$Days))\r\n    }\r\n    # Creating a hash table for parameter splatting\r\n    $Splat = @{\r\n        FilterHashtable = $FilterHashtable\r\n    }\r\n}\r\n\r\nprocess {\r\n    if (-not (Test-IsElevated)) {\r\n        Write-Error -Message \"Access Denied. Please run with Administrator privileges.\"\r\n        exit 1\r\n    }\r\n    # Get windows events, filter out everything but logins and logouts(Session starts and ends)\r\n    Get-WinEvent @Splat | ForEach-Object {\r\n        # UserName in the two event types are in different places in the Properties array\r\n        if ($_.Id -eq 4634) {\r\n            # Events with ID 4634 the user name is the second item in the array. Arrays start at 0 in PowerShell.\r\n            $User = $_.Properties[1].Value\r\n        }\r\n        else {\r\n            # Events with ID 4634 the user name is the sixth item in the array. Arrays start at 0 in PowerShell.\r\n            $User = $_.Properties[5].Value\r\n        }\r\n\r\n        # Filter out system accounts and computer logins(Active Directory related)\r\n        # DWM-0  = Desktop Window Manager\r\n        # UMFD-0 = User Mode Framework Driver\r\n        if ($SystemUsers -notcontains $User -and $User -notlike \"DWM-*\" -and $User -notlike \"UMFD-*\" -and $User -notlike \"*$\") {\r\n            # If the UserName parameter was specified then only return that user's events\r\n            if ($UserName -and $UserName -like $User) {\r\n                # Write out to StandardOutput\r\n                [PSCustomObject]@{\r\n                    Time  = $_.TimeCreated\r\n                    Event = if ($_.Id -eq 4634) { \"SessionStop\" } else { \"SessionStart\" }\r\n                    User  = $User\r\n                    ID    = $_.ID\r\n                }\r\n            } # If the UserName parameter was not specified return all users events\r\n            elseif (-not $UserName) {\r\n                # Write out to StandardOutput\r\n                [PSCustomObject]@{\r\n                    Time  = $_.TimeCreated\r\n                    Event = if ($_.Id -eq 4634) { \"SessionStop\" } else { \"SessionStart\" }\r\n                    User  = $User\r\n                    ID    = $_.ID\r\n                }\r\n            }\r\n        }\r\n        # Null $User just in case the next loop iteration doesn't set it, we can then see that the user name is missing\r\n        $User = $null\r\n    }\r\n}\r\n\r\nend {}\r\n<\/pre>\n<p>&nbsp;<\/p>\n<div class=\"in-context-cta\"><p style=\"text-align: center;\">Greifen Sie auf \u00fcber 300 Skripte im NinjaOne Dojo zu.<\/p>\n<p style=\"text-align: center;\"><a href=\"https:\/\/www.ninjaone.com\/de\/kostenlosetestversionformular\/\">Zugang erhalten<\/a><\/p>\n<\/div><\/p>\n<h2>Detailansicht<\/h2>\n<ul>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"1\" data-aria-level=\"1\">Das Skript beginnt mit einer Reihe von Kommentaren, in denen die Verwendung und das Ausgabeformat beschrieben werden.<\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"2\" data-aria-level=\"1\">Anschlie\u00dfend werden die Parameter festgelegt, sodass Benutzer:innen die Ergebnisse nach dem Benutzernamen oder einer bestimmten Anzahl von vergangenen Tagen filtern kann.<\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"3\" data-aria-level=\"1\">Im Block <strong>begin<\/strong> legt das Skript seine Anforderungen fest, einschlie\u00dflich des Weglassens von Systemkonten und der Angabe der relevanten Ereignis-IDs aus dem Windows-Sicherheitsprotokoll.<\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"4\" data-aria-level=\"1\">Der Block <strong>process<\/strong> ist der Kern des Skriptes. Zun\u00e4chst wird sichergestellt, dass das Skript mit Administratorrechten ausgef\u00fchrt wird. Dann holt es die Windows-Ereignisse ab, die den An- und Abmeldeaktivit\u00e4ten entsprechen, und filtert System- oder irrelevante Konten heraus.<\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"4\" data-aria-level=\"1\">F\u00fcr jedes Ereignis wird der Benutzername ermittelt und festgestellt, ob es sich um eine Anmeldung (SessionStart) oder Abmeldung (SessionStop) handelt. Anschlie\u00dfend werden diese Angaben ausgegeben.<\/li>\n<\/ul>\n<h2>Potenzielle Anwendungsf\u00e4lle<\/h2>\n<p>Stellen wir uns einen IT-Administrator namens Alex vor. In letzter Zeit gab es F\u00e4lle von unbefugtem Datenzugriff im Unternehmen. Alex beschlie\u00dft, den Anmeldeverlauf der letzten Woche zu \u00fcberpr\u00fcfen. Durch die Verwendung dieses Skripts mit dem Parameter <strong>-Days 7<\/strong> kann Alex eine umfassende Liste aller Benutzerzugriffsereignisse erhalten, die ihm hilft, verd\u00e4chtige Aktivit\u00e4ten zu erkennen.<\/p>\n<h2>Vergleiche<\/h2>\n<p>Es gibt zwar spezielle Tools und Plattformen f\u00fcr die Verfolgung von Benutzeraktivit\u00e4ten, doch sind diese oft mit umfangreichen Softwarepaketen verbunden oder haben einen hohen Preis. Dieses PowerShell-Skript bietet eine schlanke, anpassbare und kosteng\u00fcnstige Alternative. Dar\u00fcber hinaus k\u00f6nnen andere Methoden umfangreiche Konfigurationen erfordern, w\u00e4hrend dieses Skript \u201ePlug-and-Play\u201c ist und nur minimale Einstellungen erfordert.<\/p>\n<h2>FAQs<\/h2>\n<ul>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"1\" data-aria-level=\"1\"><strong>Ist es notwendig, das Skript mit Administratorrechten auszuf\u00fchren?<\/strong><br \/>\nJa, f\u00fcr den Zugriff auf die Sicherheitsprotokolle sind erweiterte Berechtigungen erforderlich.<\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"2\" data-aria-level=\"1\"><strong>Kann ich Protokolle abrufen, die \u00e4lter als ein Monat sind?<\/strong><br \/>\nAbsolut. Stellen Sie auf jeden Fall den Parameter <strong>-Days<\/strong> auf den gew\u00fcnschten Bereich ein.<\/li>\n<\/ul>\n<h2>Folgen<\/h2>\n<p>Die Kenntnis der Benutzerzugriffsmuster kann ein zweischneidiges Schwert sein. IT-Expert:innen k\u00f6nnen damit zwar die Systemintegrit\u00e4t aufrechterhalten, ein falscher Umgang mit diesen Informationen k\u00f6nnte jedoch gegen Datenschutzrichtlinien versto\u00dfen. Dar\u00fcber hinaus k\u00f6nnte eine st\u00e4ndige \u00dcberwachung Bedenken hinsichtlich des Vertrauens am Arbeitsplatz aufkommen lassen. Das Skript ist zwar ein leistungsstarkes Tool, aber es ist wichtig, es mit Bedacht und unter Einhaltung ethischer und rechtlicher Standards einzusetzen.<\/p>\n<h2>Empfehlungen<\/h2>\n<ul>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"1\" data-aria-level=\"1\">Stellen Sie sicher, dass Sie immer die neueste Version von PowerShell verwenden, um optimale Leistung und Sicherheit zu gew\u00e4hrleisten.<\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"2\" data-aria-level=\"1\">Dokumentieren Sie alle F\u00e4lle, in denen Sie dieses Skript zu Pr\u00fcfzwecken verwenden.<\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"2\" data-aria-level=\"1\">F\u00fchren Sie regelm\u00e4\u00dfig Backups Ihrer Protokolle, um einen m\u00f6glichen Datenverlust zu vermeiden.<\/li>\n<\/ul>\n<h2>Abschlie\u00dfende \u00dcberlegungen<\/h2>\n<p>Die Verwaltung des Benutzerzugangs ist ein wichtiger Aspekt der IT-Sicherheit. Dieses PowerShell-Skript bietet eine effiziente M\u00f6glichkeit zum Anzeigen des Anmeldeverlaufs und hilft so bei der rechtzeitigen Erkennung von und Reaktion auf Bedrohungen. Das Skript ist zwar eine eigenst\u00e4ndige L\u00f6sung, aber durch die Integration mit Plattformen wie NinjaOne k\u00f6nnen seine F\u00e4higkeiten erweitert werden, was zu einer ganzheitlichen IT-Managementl\u00f6sung f\u00fchrt.<\/p>\n<p>Der Einsatz von NinjaOne zusammen mit solchen Skripten kann die Protokollierung konsolidieren, die Warnmechanismen verbessern und <a href=\"https:\/\/www.ninjaone.com\/de\/blog\/was-ist-single-pane-of-glass-software\/\">ein einheitliches Dashboard f\u00fcr den IT-Betrieb<\/a> bereitstellen, um eine robuste, rationalisierte und sichere IT-Infrastruktur zu gew\u00e4hrleisten.<\/p>\n","protected":false},"author":35,"featured_media":143593,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"_relevanssi_hide_post":"","_relevanssi_hide_content":"","_relevanssi_pin_for_all":"","_relevanssi_pin_keywords":"","_relevanssi_unpin_keywords":"","_relevanssi_related_keywords":"","_relevanssi_related_include_ids":"","_relevanssi_related_exclude_ids":"","_relevanssi_related_no_append":"","_relevanssi_related_not_related":"","_relevanssi_related_posts":"","_relevanssi_noindex_reason":"","_lmt_disableupdate":"no","_lmt_disable":""},"operating_system":[4212],"use_cases":[4309],"class_list":["post-502074","script_hub","type-script_hub","status-publish","has-post-thumbnail","hentry","script_hub_category-windows"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.ninjaone.com\/de\/wp-json\/wp\/v2\/script_hub\/502074","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ninjaone.com\/de\/wp-json\/wp\/v2\/script_hub"}],"about":[{"href":"https:\/\/www.ninjaone.com\/de\/wp-json\/wp\/v2\/types\/script_hub"}],"author":[{"embeddable":true,"href":"https:\/\/www.ninjaone.com\/de\/wp-json\/wp\/v2\/users\/35"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ninjaone.com\/de\/wp-json\/wp\/v2\/comments?post=502074"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.ninjaone.com\/de\/wp-json\/wp\/v2\/media\/143593"}],"wp:attachment":[{"href":"https:\/\/www.ninjaone.com\/de\/wp-json\/wp\/v2\/media?parent=502074"}],"wp:term":[{"taxonomy":"script_hub_category","embeddable":true,"href":"https:\/\/www.ninjaone.com\/de\/wp-json\/wp\/v2\/operating_system?post=502074"},{"taxonomy":"use_cases","embeddable":true,"href":"https:\/\/www.ninjaone.com\/de\/wp-json\/wp\/v2\/use_cases?post=502074"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}