{"id":377500,"date":"2024-10-30T12:50:49","date_gmt":"2024-10-30T12:50:49","guid":{"rendered":"https:\/\/www.ninjaone.com\/?post_type=script_hub&#038;p=377500"},"modified":"2024-10-30T12:50:49","modified_gmt":"2024-10-30T12:50:49","slug":"laufwerkstypen-mit-powershell-abrufen","status":"publish","type":"script_hub","link":"https:\/\/www.ninjaone.com\/de\/script-hub\/laufwerkstypen-mit-powershell-abrufen\/","title":{"rendered":"Wie man Laufwerkstypen mit PowerShell effizient abruft und speichert"},"content":{"rendered":"<p>Die effiziente Verwaltung von Hardware-Ressourcen ist f\u00fcr IT-Experten und <a href=\"https:\/\/www.ninjaone.com\/de\/was-ist-ein-msp\" target=\"_blank\" rel=\"noopener\">Managed Service Provider (MSPs<\/a>) essenziell. Eine oft vorkommende Aufgabe ist die <strong>Identifizierung der in einem System installierten Laufwerkstypen<\/strong>.<\/p>\n<p>Ob es um die Unterscheidung zwischen <a href=\"https:\/\/www.ninjaone.com\/blog\/ssd-vs-hdd-vs-sshd\/\" target=\"_blank\" rel=\"noopener\">SSDs und HDDs<\/a> oder um die Protokollierung von Laufwerksdetails zu Inventarisierungszwecken geht, eine zuverl\u00e4ssige Methode zum Abrufen und Speichern dieser Informationen ist von unsch\u00e4tzbarem Wert. In diesem Blogbeitrag wird ein <a href=\"https:\/\/www.ninjaone.com\/de\/it-hub\/endpoint-management\/was-ist-powershell\/\" target=\"_blank\" rel=\"noopener\">PowerShell-Skript<\/a> vorgestellt, das f\u00fcr diesen Zweck entwickelt wurde, und dabei werden seine Funktionen, potenziellen Anwendungsf\u00e4lle und Best Practices erl\u00e4utert.<\/p>\n<h2>Kontext<\/h2>\n<p>IT-Experten m\u00fcssen h\u00e4ufig aus verschiedenen Gr\u00fcnden Details zur Hardware sammeln, z. B. zur Leistungs\u00fcberwachung, Bestandsverwaltung und Fehlerbehebung. Das mitgelieferte PowerShell-Skript ist darauf zugeschnitten, Informationen \u00fcber Festplattenlaufwerke, insbesondere Solid-State-Drives (SSDs) und Hard-Disk-Drives (HDDs), abzurufen und die Ergebnisse in einem benutzerdefinierten Feld zu speichern.<\/p>\n<p>Dieses Skript ist besonders n\u00fctzlich in Umgebungen, in denen Automatisierung und Pr\u00e4zision von entscheidender Bedeutung sind, da es eine optimierte L\u00f6sung f\u00fcr eine allgemeine Verwaltungsaufgabe bietet.<\/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    Get the drive types of all fixed SSD and HDD drives.\r\n.DESCRIPTION\r\n    Gets the drive types of all fixed SSD and HDD drives and can save the results to a custom field.\r\n\r\n.EXAMPLE\r\n    (No Parameters)\r\n    ## EXAMPLE OUTPUT WITHOUT PARAMS ##\r\n    DiskNumber DriveLetter MediaType BusType SerialNumber\r\n    ---------- ----------- --------- ------- ------------\r\n    0          C:          SSD       SATA    50026B768B3A4E3A\r\n    1          D:          HDD       SATA    WD-WCC4N0JYJYJY\r\n\r\nPARAMETER: -CustomFieldParam \"ReplaceMeWithAnyMultilineCustomField\"\r\n    The name of the custom field to save the results to.\r\n.EXAMPLE\r\n    -CustomFieldParam \"ReplaceMeWithAnyMultilineCustomField\"\r\n    ## EXAMPLE OUTPUT WITH CustomFieldParam ##\r\n    DiskNumber DriveLetter MediaType BusType SerialNumber\r\n    ---------- ----------- --------- ------- ------------\r\n    0          C:          SSD       SATA    50026B768B3A4E3A\r\n    1          D:          HDD       SATA    WD-WCC4N0JYJYJY\r\n    [Info] Saving the results to the custom field. (ReplaceMeWithAnyMultilineCustomField)\r\n    [Info] The results have been saved to the custom field. (ReplaceMeWithAnyMultilineCustomField)\r\n\r\nCustom Field Output:\r\n    #0, Letter: C:, Media: SSD, Bus: SATA, SN: 50026B768B3A4E3A\r\n    #1, Letter: D:, Media: HDD, Bus: SATA, SN: WD-WCC4N0JYJYJY\r\n\r\n.PARAMETER CustomFieldName\r\n    The name of the custom field to save the results to.\r\n.INPUTS\r\n    None\r\n.OUTPUTS\r\n    None\r\n.NOTES\r\n    Minimum OS Architecture Supported: Windows 10\/Server 2016\r\n    Release Notes: 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    [String]$CustomFieldName\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}\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    if ($env:customFieldName -and $env:customFieldName -ne 'null') {\r\n        $CustomFieldName = $env:customFieldName\r\n    }\r\n\r\n    # Get the drive type of all drives\r\n    $Disks = Get-PhysicalDisk | Where-Object { $_.BusType -notlike \"File Backed Virtual\" -and -not ($_.PhysicalLocation -like \"*USB*\" -or $_.BusType -like \"*USB*\") } | Select-Object -Property DeviceID, MediaType, BusType, SerialNumber\r\n    if ($($Disks | Where-Object { $_.MediaType -like \"Unspecified\" }).Count) {\r\n        Write-Host \"[Info] An Unspecified MediaType likely indicates this machine is a VM or there is an issue with that drive.\"\r\n    }\r\n    # Get the partitions with mounted drive letters\r\n    $Partitions = Get-Partition | Where-Object { $_.DriveLetter -ne $null } | Select-Object -Property DriveLetter, DiskNumber\r\n    # Join the two collections\r\n    $Drives = $Disks | ForEach-Object {\r\n        $Disk = $_\r\n        $Partition = $Partitions | Where-Object { $_.DiskNumber -eq $Disk.DeviceID }\r\n        [PSCustomObject]@{\r\n            DiskNumber   = $_.DeviceID\r\n            DriveLetter  = $Partition.DriveLetter | Where-Object { $_ }\r\n            MediaType    = $_.MediaType\r\n            BusType      = $_.BusType\r\n            SerialNumber = $_.SerialNumber\r\n        }\r\n    }\r\n    $($Drives | Out-String) | Write-Host\r\n\r\n    # Save the results to a custom field\r\n    if ($CustomFieldName) {\r\n        Write-Host \"[Info] Saving the results to the custom field. ($CustomFieldName)\"\r\n        $CustomField = $(\r\n            $Drives | ForEach-Object {\r\n                \"#:$($_.DiskNumber), Letter: $($_.DriveLetter), Media: $($_.MediaType), Bus: $($_.BusType), SN: $($_.SerialNumber)\"\r\n            }\r\n        ) | Ninja-Property-Set-Piped -Name $CustomFieldName 2&gt;&amp;1\r\n        if ($CustomField.Exception) {\r\n            Write-Host $CustomField.Exception.Message\r\n            Write-Host \"[Error] Failed to save the results to the custom field. ($CustomFieldName)\"\r\n        }\r\n        else {\r\n            Write-Host \"[Info] The results have been saved to the custom field. ($CustomFieldName)\"\r\n        }\r\n    }\r\n}\r\nend {\r\n    \r\n    \r\n    \r\n}<\/pre>\n<p>&nbsp;<\/p>\n\n<div class=\"in-context-cta\"><p>Greifen Sie auf \u00fcber 300 Skripte im NinjaOne Dojo zu.<\/p>\n<p><a href=\"https:\/\/www.ninjaone.com\/freetrialform\/\">Zugang erhalten<\/a><\/p>\n<\/div>\n<h2>Detailansicht<\/h2>\n<p>Lassen Sie uns das Skript Schritt f\u00fcr Schritt aufschl\u00fcsseln, um zu verstehen, wie es funktioniert und wie es sein Ziel erreicht. Wie kann man denn Laufwerkstypen mit PowerShell abrufen und speichern?<\/p>\n<h3>Voraussetzungen<\/h3>\n<p>Das Skript erfordert PowerShell Version 5.1 oder h\u00f6her. Sie beginnt mit der Definition von .SYNOPSIS und .DESCRIPTION und gibt einen \u00dcberblick \u00fcber seinen Zweck. Die Abschnitte .EXAMPLE zeigen die erwarteten Ausgaben mit und ohne -CustomFieldParam.<\/p>\n<h3>Parameter und Ersteinrichtung<\/h3>\n<p>Das Skript akzeptiert einen Parameter, CustomFieldName, der den Namen des benutzerdefinierten Feldes angibt, in dem die Ergebnisse gespeichert werden sollen. Es enth\u00e4lt auch eine Funktion Test-IsElevated, um zu pr\u00fcfen, ob das Skript mit Administratorrechten ausgef\u00fchrt wird, was f\u00fcr den Zugriff auf detaillierte Laufwerksinformationen erforderlich ist.<\/p>\n<h3>Verarbeitung von Laufwerksinformationen<\/h3>\n<ol>\n<li><strong>Pr\u00fcfung auf erh\u00f6hte Berechtigungen<\/strong>: Das Skript pr\u00fcft zun\u00e4chst, ob es mit den erforderlichen Berechtigungen ausgef\u00fchrt wird. Ist dies nicht der Fall, bricht es mit einer Fehlermeldung ab.<\/li>\n<li><strong>Handhabung von Umgebungsvariablen<\/strong>: Wenn ein benutzerdefinierter Feldname \u00fcber eine Umgebungsvariable festgelegt wird, hat er Vorrang vor dem Skriptparameter.<\/li>\n<li><strong>Abrufen von Laufwerksinformationen<\/strong>: Mit Get-PhysicalDisk ruft das Skript alle physischen Laufwerke ab und filtert virtuelle und USB-Laufwerke heraus. Es w\u00e4hlt dann die relevanten Eigenschaften aus: DeviceID, MediaType, BusType und SerialNumber.<\/li>\n<li><strong>Informationen zu den Partitionen<\/strong>: Das Skript ruft mit Get-Partition Partitionsdetails ab, wobei es sich auf Partitionen mit zugewiesenen Laufwerksbuchstaben konzentriert.<\/li>\n<li><strong>Datenaggregation<\/strong>: Es f\u00fchrt die physischen Laufwerks- und Partitionsinformationen zusammen und erstellt eine umfassende Liste der Laufwerke mit ihren jeweiligen Details.<\/li>\n<\/ol>\n<h3>Speichern von Ausgaben in benutzerdefinierten Feldern<\/h3>\n<p>Das Skript gibt die Laufwerksinformationen in die Konsole aus. Wenn ein CustomFieldName angegeben wird, formatiert es die Daten und versucht, sie mit dem hypothetischen cmdlet Ninja-Property-Set-Piped im angegebenen benutzerdefinierten Feld zu speichern. Das Skript behandelt m\u00f6gliche Fehler w\u00e4hrend dieses Prozesses und gibt R\u00fcckmeldung \u00fcber den Erfolg der Operation.<\/p>\n<h2>Potenzielle Anwendungsf\u00e4lle<\/h2>\n<p>Ein MSP verwaltet mehrere Kundensysteme und muss die Hardwarekonfigurationen regelm\u00e4\u00dfig \u00fcberpr\u00fcfen, um eine optimale Leistung zu gew\u00e4hrleisten und m\u00f6gliche Probleme zu erkennen.<\/p>\n<p>Durch die Verteilung dieses Skripts auf den Kunden-Rechnern kann der MSP die Erfassung der Laufwerkstypen automatisieren und die Daten f\u00fcr sp\u00e4tere Verwendung protokollieren. Auf diese Weise werden Systeme identifiziert, die durch Hardware-Upgrades optimiert werden k\u00f6nnten, z. B. durch den Austausch einer Festplatte gegen eine SSD, um die Leistung zu verbessern.<\/p>\n<h2>Vergleiche<\/h2>\n<p>Im Vergleich zu manuellen Methoden oder der Verwendung unterschiedlicher Tools bietet dieses Skript einen einheitlichen Ansatz innerhalb der PowerShell-Umgebung, wodurch der Bedarf an externen Anwendungen reduziert wird. Tools wie Windows Management Instrumentation (WMI) oder Software von Drittanbietern k\u00f6nnen zwar \u00e4hnliche Ergebnisse erzielen, aber die Integration dieses Skripts in benutzerdefinierte Felder und seine Automatisierungsfunktionen machen es zu einer <a href=\"https:\/\/www.ninjaone.com\/de\/effizienz\/\" target=\"_blank\" rel=\"noopener\">effizienteren<\/a> und skalierbaren L\u00f6sung.<\/p>\n<h2>FAQs<\/h2>\n<ol>\n<li><strong> Ben\u00f6tige ich Administratorrechte, um dieses Skript auszuf\u00fchren?<\/strong> Ja, das Skript ben\u00f6tigt Administratorrechte, um auf detaillierte Laufwerksinformationen zuzugreifen.<\/li>\n<li><strong>Kann dieses Skript auf virtuellen Maschinen verwendet werden?<\/strong> Das Skript liefert auf virtuellen Maschinen m\u00f6glicherweise keine genauen Ergebnisse, da der Medientyp als &#8218;Unspecified&#8216; aufgef\u00fchrt sein kann.<\/li>\n<li><strong>Was geschieht, wenn der Name des benutzerdefinierten Feldes nicht angegeben wird?<\/strong> Wenn der Parameter CustomFieldName nicht angegeben wird, gibt das Skript nur die Laufwerksinformationen in die Konsole aus.<\/li>\n<\/ol>\n<h2>Folgen<\/h2>\n<p>Die regelm\u00e4\u00dfige \u00dcberpr\u00fcfung von Laufwerkstypen kann erhebliche Auswirkungen auf die IT-Sicherheit und Leistung haben. So k\u00f6nnen beispielsweise \u00e4ltere Festplatten erkannt und ausgetauscht werden, was das Risiko von Datenverlusten aufgrund von Festplattenausf\u00e4llen verringert. Dar\u00fcber hinaus kann das Verst\u00e4ndnis der Speicherarchitektur bei der Optimierung von Backup-Strategien helfen und sicherstellen, dass wichtige Daten auf der zuverl\u00e4ssigsten Hardware gespeichert werden.<\/p>\n<h2>Empfehlungen<\/h2>\n<ul>\n<li>F\u00fchren Sie das Skript immer mit erh\u00f6hten Rechten aus.<\/li>\n<li>Planen Sie die Ausf\u00fchrung des Skripts f\u00fcr alle verwalteten Systeme regelm\u00e4\u00dfig, um die Hardware-Inventare auf dem neuesten Stand zu halten.<\/li>\n<li>Vergewissern Sie sich, dass geeignete Mechanismen zur Fehlerbehandlung und -protokollierung vorhanden sind, um Probleme w\u00e4hrend der Ausf\u00fchrung zu beheben.<\/li>\n<\/ul>\n<h2>Abschlie\u00dfende \u00dcberlegungen<\/h2>\n<p>Dieses PowerShell-Skript bietet eine solide L\u00f6sung f\u00fcr IT-Experten und MSPs zum effizienten Abrufen und Speichern von Laufwerkstypen. Durch die Automatisierung dieses Prozesses k\u00f6nnen Unternehmen genaue Hardware-Inventare f\u00fchren, die Leistung optimieren und ihre IT-Management-Strategien insgesamt verbessern.<\/p>\n<p>Tools wie <a href=\"https:\/\/www.ninjaone.com\/de\/\" target=\"_blank\" rel=\"noopener\">NinjaOne<\/a> k\u00f6nnen diesen Prozess weiter optimieren, indem sie solche Skripte in umfassendere Automatisierungsworkflows integrieren und so eine vollst\u00e4ndige IT-Managementplattform bieten, die einen proaktiven und effizienten Betrieb unterst\u00fctzt.<\/p>\n","protected":false},"author":35,"featured_media":0,"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":[4307],"class_list":["post-377500","script_hub","type-script_hub","status-publish","hentry","script_hub_category-windows","use_cases-allgemeine-konfiguration"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.ninjaone.com\/de\/wp-json\/wp\/v2\/script_hub\/377500","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=377500"}],"wp:attachment":[{"href":"https:\/\/www.ninjaone.com\/de\/wp-json\/wp\/v2\/media?parent=377500"}],"wp:term":[{"taxonomy":"script_hub_category","embeddable":true,"href":"https:\/\/www.ninjaone.com\/de\/wp-json\/wp\/v2\/operating_system?post=377500"},{"taxonomy":"use_cases","embeddable":true,"href":"https:\/\/www.ninjaone.com\/de\/wp-json\/wp\/v2\/use_cases?post=377500"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}