{"id":208581,"date":"2024-02-23T12:13:35","date_gmt":"2024-02-23T12:13:35","guid":{"rendered":"https:\/\/www.ninjaone.com\/script-hub\/windows-benutzerprofilgroessen-auslesen-powershell\/"},"modified":"2024-03-04T20:42:46","modified_gmt":"2024-03-04T20:42:46","slug":"windows-benutzerprofilgroessen-auslesen-powershell","status":"publish","type":"script_hub","link":"https:\/\/www.ninjaone.com\/de\/script-hub\/windows-benutzerprofilgroessen-auslesen-powershell\/","title":{"rendered":"Wie man mit PowerShell auf Windows-Benutzerprofilgr\u00f6\u00dfen zugreift und sie speichert"},"content":{"rendered":"<p>PowerShell hat zweifellos die Art und Weise revolutioniert, wie IT-Profis Windows-Systeme verwalten, allt\u00e4gliche Aufgaben automatisieren und tiefer in die Systemdiagnose eintauchen. Heute befassen wir uns mit einem PowerShell-Skript, das zur <strong>Bewertung der Gr\u00f6\u00dfe von Benutzerprofilen unter Windows<\/strong> entwickelt wurde und ein wichtiges Tool f\u00fcr Systemadministratoren und Managed Service Provider (MSPs) darstellt.<\/p>\n<h2>Hintergrund<\/h2>\n<p>Mit der Zunahme von Big Data und immer anspruchsvolleren Anwendungen sind die Verwaltung von Speicherplatz und die Gew\u00e4hrleistung einer effizienten Festplattennutzung von gr\u00f6\u00dfter Bedeutung. IT-Fachleute und MSPs haben oft mit Problemen zu k\u00e4mpfen, die sich aus der Ansammlung gro\u00dfer Datenmengen durch die Benutzer ergeben, manchmal ohne es zu wissen. Dieses Skript l\u00f6st dieses Problem, indem es IT-Experten erm\u00f6glicht, die Gr\u00f6\u00dfe von Benutzerprofilen schnell zu bestimmen und so eine optimale Speicherverwaltung und Systemintegrit\u00e4t zu gew\u00e4hrleisten.<\/p>\n<h2>Das Skript<\/h2>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"powershell\">#Requires -Version 5.1\r\n\r\n&lt;#\r\n.SYNOPSIS\r\n    Updates a Custom Field with the total size of all User Profiles.\r\n    If the Max parameter is specified then it will return an exit code of 1\r\n     for any profile being over that Max threshold in GB.\r\n.DESCRIPTION\r\n    Updates a Custom Field with the total size of all User Profiles.\r\n    If the Max parameter is specified then it will return an exit code of 1\r\n     for any profile being over that Max threshold in GB.\r\n.EXAMPLE\r\n     -Max 60\r\n    Returns and exit code of 1 if any profile is over 60GB\r\n.EXAMPLE\r\n     -CustomField \"Something\"\r\n    Specifies the name of the custom field to update.\r\n.EXAMPLE\r\n    No Parameter needed.\r\n    Uses the default custom field name: TotalUsersProfileSize\r\n.OUTPUTS\r\n    None\r\n.NOTES\r\n    Minimum OS Architecture Supported: Windows 10, Windows Server 2016\r\n    Release Notes:\r\n    Initial Release\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    [Parameter()]\r\n    [Alias(\"MaxSize\", \"Size\", \"ms\", \"m\", \"s\")]\r\n    [Double]\r\n    $Max,\r\n    [Parameter()]\r\n    [Alias(\"Custom\", \"Field\", \"cf\", \"c\", \"f\")]\r\n    [String]\r\n    $CustomField = \"TotalUsersProfileSize\"\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        $p.IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator)\r\n    }\r\n    function Format-FileSize {\r\n        param($Length)\r\n        switch ($Length) {\r\n            { $_ \/ 1TB -gt 1 } { \"$([Math]::Round(($_ \/ 1TB),2)) TB\"; break }\r\n            { $_ \/ 1GB -gt 1 } { \"$([Math]::Round(($_ \/ 1GB),2)) GB\"; break }\r\n            { $_ \/ 1MB -gt 1 } { \"$([Math]::Round(($_ \/ 1MB),2)) MB\"; break }\r\n            { $_ \/ 1KB -gt 1 } { \"$([Math]::Round(($_ \/ 1KB),2)) KB\"; break }\r\n            Default { \"$_ Bytes\" }\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\r\n    $Profiles = Get-ChildItem -Path \"C:Users\"\r\n    $ProfileSizes = $Profiles | ForEach-Object {\r\n        [PSCustomObject]@{\r\n            Name   = $_.BaseName\r\n            Length = Get-ChildItem -Path $_.FullName -Recurse -Force -ErrorAction SilentlyContinue | Measure-Object -Property Length -Sum -ErrorAction SilentlyContinue | Select-Object -Property Sum -ExpandProperty Sum\r\n        }\r\n    }\r\n    $Largest = $ProfileSizes | Sort-Object -Property Length -Descending | Select-Object -First 1\r\n\r\n    $Size = $ProfileSizes | Measure-Object -Property Length -Sum -ErrorAction SilentlyContinue | Select-Object -Property Sum -ExpandProperty Sum\r\n\r\n    $FormattedSize = Format-FileSize -Length $Size\r\n\r\n    $AllProfiles = $ProfileSizes | Sort-Object -Property Length -Descending | ForEach-Object {\r\n        $FormattedSizeUser = Format-FileSize -Length $_.Length\r\n        \"$($_.Name) $($FormattedSizeUser)\"\r\n    }\r\n\r\n    Write-Host \"All Profiles - $FormattedSize, $($AllProfiles -join ', ')\"\r\n\r\n    Ninja-Property-Set -Name $CustomField -Value \"$AllProfiles\"\r\n\r\n    if ($Max -and $Max -gt 0) {\r\n        if ($Largest.Length -gt $Max * 1GB) {\r\n            Write-Host \"Found profile over the max size of $Max GB.\"\r\n            Write-Host \"$($Largest.Name) profile is $($Largest.Length \/ 1GB) GB\"\r\n            exit 1\r\n        }\r\n    }\r\n    exit 0\r\n}\r\nend {}<\/pre>\n<p>&nbsp;<\/p>\n\n<div class=\"in-context-cta\"><p>Zugriff auf \u00fcber 300 Skripte im NinjaOne Dojo<\/p>\n<p><a href=\"https:\/\/www.ninjaone.com\/de\/kostenlosetestversionformular\/\">Zugang erhalten<\/a><\/p>\n<\/div>\n<h2>Detailansicht<\/h2>\n<p>Das betreffende Skript ist in folgende Abschnitte unterteilt:<\/p>\n<ul>\n<li><strong>Cmdlet-Bindung und Parameter<\/strong>: Das Skript beginnt mit der Definition von Parametern, z. B. <strong>Max<\/strong>, das einen optionalen Schwellenwert f\u00fcr die Profilgr\u00f6\u00dfe festlegt, und <strong>CustomField<\/strong>, das den Namen des zu aktualisierenden benutzerdefinierten Feldes angibt.<\/li>\n<li><strong>Abschnitt beginnen<\/strong>: Hier haben wir zwei Hilfsfunktionen:\n<ul>\n<li><strong>Test-IsElevated<\/strong>: Pr\u00fcft, ob das Skript mit Administratorrechten ausgef\u00fchrt wird.<\/li>\n<li><strong>Format-FileSize<\/strong>: Konvertiert Bytes in ein lesbares Dateigr\u00f6\u00dfenformat.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Prozessabschnitt<\/strong>:\n<ul>\n<li>Das Skript pr\u00fcft, ob es \u00fcber Administratorrechte verf\u00fcgt.<\/li>\n<li>Es liest dann alle Benutzerprofile aus &#8222;C:Users&#8220; aus und berechnet deren Gr\u00f6\u00dfe.<\/li>\n<li>Die Profile werden sortiert und die Gesamtgr\u00f6\u00dfe wird berechnet.<\/li>\n<li>Die Daten werden an den Host ausgegeben, und die Funktion &#8222;Ninja-Property-Set&#8220; aktualisiert das benutzerdefinierte Feld.<\/li>\n<li>Wenn ein Max-Parameter angegeben ist, pr\u00fcft das Skript auf Profile, die diese Gr\u00f6\u00dfe \u00fcberschreiten, und beendet sich mit einem entsprechenden Code.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h2>Potenzielle Anwendungsf\u00e4lle<\/h2>\n<p>Stellen Sie sich einen MSP vor, der den Speicherplatz f\u00fcr einen Firmenkunden beaufsichtigt. Das Unternehmen sieht sich pl\u00f6tzlich mit Speicherplatzproblemen konfrontiert. Anstatt sich f\u00fcr teure Speicher-Upgrades zu entscheiden, verwendet der MSP dieses Skript, um \u00fcbergro\u00dfe Benutzerprofile zu identifizieren. Anhand dieser Daten k\u00f6nnen sie sich dann mit bestimmten Benutzern oder Abteilungen in Verbindung setzen, um die Speicherung besser zu verwalten und zu optimieren.<\/p>\n<h2>Vergleich<\/h2>\n<p>Um die kumulativen Gr\u00f6\u00dfen von Windows-Benutzerprofilen zu ermitteln, war bisher eine manuelle Navigation durch Eigenschaften, Anwendungen von Drittanbietern oder umst\u00e4ndliche Skripte erforderlich. Dieses PowerShell-Skript bietet einen optimierten Ansatz, bei dem native Windows-Funktionen verwendet werden, um pr\u00e4zise und umsetzbare Erkenntnisse zu liefern.<\/p>\n<h2>FAQs<\/h2>\n<ul>\n<li><strong>Sind Administrator-Rechte zwingend notwendig?<\/strong><br \/>\nJa, das Skript erfordert zur Ausf\u00fchrung Administrator-Rechte.<\/li>\n<li><strong>Was passiert, wenn ein Benutzerprofil die angegebene maximale Gr\u00f6\u00dfe \u00fcberschreitet?<\/strong><br \/>\nDas Skript gibt eine Meldung aus, die angibt, welches Profil die Gr\u00f6\u00dfe \u00fcberschreitet, und gibt einen Exit-Code von 1 zur\u00fcck.<\/li>\n<li><strong>Wie lautet der Standardname des benutzerdefinierten Feldes, wenn er nicht angegeben wird?<\/strong><br \/>\nEr lautet &#8222;TotalUsersProfileSize&#8220;.<\/li>\n<\/ul>\n<h2>Auswirkungen<\/h2>\n<p>Dieses Skript ist zwar von gro\u00dfem Nutzen, aber wenn es nicht richtig eingesetzt wird, kann es zu Problemen mit dem Datenschutz f\u00fchren. Die Extraktion und m\u00f6gliche Weitergabe von Benutzerprofilgr\u00f6\u00dfen k\u00f6nnte von einigen Nutzern als invasiv empfunden werden. F\u00fcr die IT-Sicherheit kann das Verst\u00e4ndnis der Speichergewohnheiten der Benutzer au\u00dferdem eine proaktive M\u00f6glichkeit sein, ungew\u00f6hnliche Datenspitzen zu erkennen, die auf Malware oder eine m\u00f6gliche Datenverletzung hinweisen k\u00f6nnten.<\/p>\n<h2>Empfehlungen<\/h2>\n<ul>\n<li>F\u00fchren Sie Diagnoseskripte immer au\u00dferhalb der Hauptgesch\u00e4ftszeiten aus, um m\u00f6gliche Systembeeintr\u00e4chtigungen zu vermeiden.<\/li>\n<li>Vergewissern Sie sich, dass Sie die erforderlichen Genehmigungen eingeholt und die Beteiligten informiert haben, bevor Sie die Ma\u00dfnahme durchf\u00fchren.<\/li>\n<li>Aktualisieren und pflegen Sie das Skript regelm\u00e4\u00dfig, um sich \u00e4ndernden Systemstrukturen und -anforderungen gerecht zu werden.<\/li>\n<\/ul>\n<h2>Abschlie\u00dfende \u00dcberlegungen<\/h2>\n<p>Eine <a href=\"https:\/\/www.ninjaone.de\/\" target=\"_blank\" rel=\"noopener\">IT-Management-Plattform<\/a> wie NinjaOne kann den Nutzen dieses Skripts erheblich steigern, indem sie IT-Fachleuten einen ganzheitlichen \u00dcberblick \u00fcber den Systemzustand, die Leistung und Anomalien bietet. Die Integration solcher Skripte in NinjaOne bietet Einblicke in Echtzeit und macht die Speicherverwaltung zu einer m\u00fchelosen Aufgabe.<\/p>\n","protected":false},"author":35,"featured_media":207214,"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-208581","script_hub","type-script_hub","status-publish","has-post-thumbnail","hentry","script_hub_category-windows","use_cases-benutzerinnen-und-zugangsverwaltung"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.ninjaone.com\/de\/wp-json\/wp\/v2\/script_hub\/208581","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=208581"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.ninjaone.com\/de\/wp-json\/wp\/v2\/media\/207214"}],"wp:attachment":[{"href":"https:\/\/www.ninjaone.com\/de\/wp-json\/wp\/v2\/media?parent=208581"}],"wp:term":[{"taxonomy":"script_hub_category","embeddable":true,"href":"https:\/\/www.ninjaone.com\/de\/wp-json\/wp\/v2\/operating_system?post=208581"},{"taxonomy":"use_cases","embeddable":true,"href":"https:\/\/www.ninjaone.com\/de\/wp-json\/wp\/v2\/use_cases?post=208581"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}