{"id":353635,"date":"2024-08-02T09:09:20","date_gmt":"2024-08-02T09:09:20","guid":{"rendered":"https:\/\/www.ninjaone.com\/script-hub\/verifier-les-types-de-lecteurs-powershell\/"},"modified":"2024-10-13T19:05:43","modified_gmt":"2024-10-13T19:05:43","slug":"verifier-les-types-de-lecteurs-powershell","status":"publish","type":"script_hub","link":"https:\/\/www.ninjaone.com\/fr\/script-hub\/verifier-les-types-de-lecteurs-powershell\/","title":{"rendered":"Comment v\u00e9rifier et sauvegarder les types de lecteurs avec PowerShell"},"content":{"rendered":"<p>Une gestion efficace des ressources mat\u00e9rielles est cruciale pour les professionnels de l&rsquo;informatique et les <a href=\"https:\/\/www.ninjaone.com\/fr\/quest-ce-quun-msp\" target=\"_blank\" rel=\"noopener\">fournisseurs de services g\u00e9r\u00e9s (MSP)<\/a>. L&rsquo;une des t\u00e2ches les plus fr\u00e9quentes consiste \u00e0<strong> identifier les types de lecteurs install\u00e9s dans un syst\u00e8me<\/strong>.<\/p>\n<p>Qu&rsquo;il s&rsquo;agisse de faire la distinction entre <a href=\"https:\/\/www.ninjaone.com\/blog\/ssd-vs-hdd-vs-sshd\/\" target=\"_blank\" rel=\"noopener\">les disques SSD et les disques durs<\/a> ou d&rsquo;enregistrer les d\u00e9tails des disques \u00e0 des fins d&rsquo;inventaire, disposer d&rsquo;une m\u00e9thode fiable pour r\u00e9cup\u00e9rer et enregistrer ces informations est tr\u00e8s utile. Cet article pr\u00e9sente un script <a href=\"https:\/\/www.ninjaone.com\/it-hub\/endpoint-management\/what-is-powershell\/\" target=\"_blank\" rel=\"noopener\">PowerShell<\/a> con\u00e7u pour cela, ainsi que des explications sur sa fonctionnalit\u00e9, les cas d&rsquo;utilisation potentiels et les bonnes pratiques<\/p>\n<h2>Contexte<\/h2>\n<p>Les professionnels de l&rsquo;informatique ont souvent besoin de recueillir des informations sur le mat\u00e9riel pour diverses raisons, telles que le contr\u00f4le des performances, la gestion d&rsquo;inventaire et le d\u00e9pannage. Le script PowerShell fourni est con\u00e7u pour r\u00e9cup\u00e9rer des informations sur les disques fixes, en particulier les SSD (Solid State Drives) et les HDD (Hard Disk Drives), et enregistrer les r\u00e9sultats dans un champ personnalis\u00e9.<\/p>\n<p>Ce script est particuli\u00e8rement utile dans les environnements o\u00f9 l&rsquo;automatisation et la pr\u00e9cision sont essentielles, car il offre une solution simple et optimale d&rsquo;effectuer une t\u00e2che administrative courante.<\/p>\n<h2>Le script PowerShell\u00a0:<\/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=\"blog-cta-new blog-cta-style-1\"><div class=\"cta-left\"><h2><\/h2><p><\/p><\/div><div class=\"cta-right\"><a class=\"button\" href=\"\"><\/a><\/div><\/div>\n<h2>Description d\u00e9taill\u00e9e<\/h2>\n<p>D\u00e9cortiquons le script \u00e9tape par \u00e9tape pour comprendre sa fonctionnalit\u00e9 et la mani\u00e8re dont il atteint son objectif.<\/p>\n<h3>Pr\u00e9requis<\/h3>\n<p>Le script n\u00e9cessite la version 5.1 ou plus r\u00e9cente de PowerShell. Il commence par d\u00e9finir .SYNOPSIS et .DESCRIPTION, et donne un aper\u00e7u de son objectif. Les sections .EXAMPLE montrent les r\u00e9sultats attendus avec et sans -CustomFieldParam.<\/p>\n<h3>Param\u00e8tres et configuration initiale<\/h3>\n<p>Le script accepte un param\u00e8tre, CustomFieldName, qui sp\u00e9cifie le nom du champ personnalis\u00e9 dans lequel les r\u00e9sultats seront enregistr\u00e9s. Il comprend \u00e9galement une fonction Test-IsElevated qui permet de v\u00e9rifier si le script est ex\u00e9cut\u00e9 avec des privil\u00e8ges d&rsquo;administrateur, ce qui est n\u00e9cessaire pour acc\u00e9der \u00e0 des informations d\u00e9taill\u00e9es sur le lecteur.<\/p>\n<h3>Traitement des informations \u00e0 propos des lecteurs<\/h3>\n<ol>\n<li><strong>Contr\u00f4le des privil\u00e8ges \u00e9lev\u00e9s<\/strong>: Le script v\u00e9rifie d&rsquo;abord s&rsquo;il est ex\u00e9cut\u00e9 avec les privil\u00e8ges n\u00e9cessaires. Si ce n&rsquo;est pas le cas, il se termine par un message d&rsquo;erreur.<\/li>\n<li><strong>Gestion des variables d&rsquo;environnement<\/strong> : Si le nom d&rsquo;un champ personnalis\u00e9 est d\u00e9fini par une variable d&rsquo;environnement, il remplace le param\u00e8tre du script.<\/li>\n<li><strong>Recherche d&rsquo;informations sur le lecteur<\/strong>: En utilisant Get-PhysicalDisk, le script r\u00e9cup\u00e8re tous les lecteurs physiques, tout en filtrant les lecteurs virtuels et USB. Il s\u00e9lectionne ensuite les propri\u00e9t\u00e9s pertinentes : DeviceID, MediaType, BusType et SerialNumber.<\/li>\n<li><strong>Informations sur la partition<\/strong>: Le script r\u00e9cup\u00e8re les d\u00e9tails de la partition \u00e0 l&rsquo;aide de Get-Partition, en se concentrant sur les partitions auxquelles des lettres de lecteur ont \u00e9t\u00e9 attribu\u00e9es.<\/li>\n<li><strong>Agr\u00e9gation de donn\u00e9es<\/strong>: Il fusionne les informations sur les lecteurs physiques et les partitions, cr\u00e9ant ainsi une liste compl\u00e8te des lecteurs avec leurs d\u00e9tails.<\/li>\n<\/ol>\n<h3>Enregistrement des sorties et des champs personnalis\u00e9s<\/h3>\n<p>Le script affiche les informations sur le lecteur dans la console. Si un nom de champ personnalis\u00e9 est fourni, il formate les donn\u00e9es et tente de les enregistrer dans le champ personnalis\u00e9 sp\u00e9cifi\u00e9 \u00e0 l&rsquo;aide d&rsquo;une cmdlet hypoth\u00e9tique Ninja-Property-Set-Piped. Il traite les erreurs potentielles au cours de ce processus et fournit un retour d&rsquo;information sur le succ\u00e8s de l&rsquo;op\u00e9ration.<\/p>\n<h2>Cas d&rsquo;utilisation potentiels<\/h2>\n<p>Une entreprise MSP g\u00e8re plusieurs syst\u00e8mes clients et doit r\u00e9guli\u00e8rement v\u00e9rifier les configurations mat\u00e9rielles afin de garantir des performances optimales et d&rsquo;identifier les probl\u00e8mes potentiels.<\/p>\n<p>En d\u00e9ployant ce script sur les machines clientes, l&rsquo;entreprise MSP peut automatiser la liste des types de lecteurs et enregistrer les donn\u00e9es pour r\u00e9f\u00e9rence ult\u00e9rieure. Cela permet d&rsquo;identifier rapidement les syst\u00e8mes qui pourraient b\u00e9n\u00e9ficier de mises \u00e0 niveau mat\u00e9rielles, comme le remplacement d&rsquo;un disque dur par un disque SSD pour am\u00e9liorer les performances.<\/p>\n<h2>Comparaisons<\/h2>\n<p>Par rapport aux m\u00e9thodes manuelles ou \u00e0 l&rsquo;utilisation de multiples d&rsquo;outils, ce script offre une approche unifi\u00e9e dans l&rsquo;environnement PowerShell, r\u00e9duisant ainsi le besoin d&rsquo;applications externes. Bien que des outils tels que Windows Management Instrumentation (WMI) ou des logiciels tiers permettent d&rsquo;obtenir des r\u00e9sultats similaires, l&rsquo;int\u00e9gration de ce script avec des champs personnalis\u00e9s et ses capacit\u00e9s d&rsquo;automatisation en font une solution plus<a href=\"https:\/\/www.ninjaone.com\/fr\/efficacite\" target=\"_blank\" rel=\"noopener\"> efficace<\/a> et plus \u00e9volutive.<\/p>\n<h2>FAQ<\/h2>\n<ol>\n<li><strong> Ai-je besoin de privil\u00e8ges d&rsquo;administrateur pour ex\u00e9cuter ce script ?<\/strong> Oui, le script n\u00e9cessite des droits d&rsquo;administrateur pour acc\u00e9der aux informations d\u00e9taill\u00e9es sur les lecteurs.<\/li>\n<li><strong>Ce script peut-il \u00eatre utilis\u00e9 sur des machines virtuelles ?<\/strong> Le script peut ne pas fournir de r\u00e9sultats pr\u00e9cis sur les machines virtuelles, car le type de m\u00e9dia peut \u00eatre r\u00e9pertori\u00e9 comme \u00ab\u00a0non sp\u00e9cifi\u00e9\u00a0\u00bb<\/li>\n<li><strong>Que se passe-t-il si le nom du champ personnalis\u00e9 n&rsquo;est pas fourni ?<\/strong> Si le param\u00e8tre CustomFieldName n&rsquo;est pas sp\u00e9cifi\u00e9, le script n&rsquo;affichera que les informations relatives au lecteur sur la console.<\/li>\n<\/ol>\n<h2>Implications<\/h2>\n<p>L&rsquo;audit r\u00e9gulier des types de lecteurs peut avoir un impact important sur la s\u00e9curit\u00e9 et les performances informatiques. Par exemple, l&rsquo;identification des disques durs les plus anciens permet un remplacement proactif, ce qui r\u00e9duit le risque de perte de donn\u00e9es due \u00e0 une d\u00e9faillance du disque. De plus, la compr\u00e9hension de l&rsquo;architecture de stockage peut aider \u00e0 optimiser les strat\u00e9gies de sauvegarde et \u00e0 garantir que les donn\u00e9es essentielles sont stock\u00e9es sur le mat\u00e9riel le plus fiable.<\/p>\n<h2>Recommandations<\/h2>\n<ul>\n<li>Ex\u00e9cutez toujours le script avec des privil\u00e8ges \u00e9lev\u00e9s.<\/li>\n<li>Programmez r\u00e9guli\u00e8rement l&rsquo;ex\u00e9cution du script sur tous les syst\u00e8mes g\u00e9r\u00e9s afin de maintenir les inventaires de mat\u00e9riel \u00e0 jour.<\/li>\n<li>Veillez \u00e0 ce que des m\u00e9canismes appropri\u00e9s de traitement des erreurs et de journalisation soient en place pour r\u00e9soudre tout probl\u00e8me survenant au cours de l&rsquo;ex\u00e9cution.<\/li>\n<\/ul>\n<h2>Conclusion<\/h2>\n<p>Ce script PowerShell offre une solution optimale aux professionnels de l&rsquo;informatique et aux entreprises MSP pour r\u00e9cup\u00e9rer et enregistrer les types de lecteurs de mani\u00e8re efficace. En automatisant ce processus, les entreprises peuvent maintenir des inventaires de mat\u00e9riel pr\u00e9cis, optimiser les performances et am\u00e9liorer leurs strat\u00e9gies globales de gestion informatique.<\/p>\n<p>Des outils tels que <a href=\"https:\/\/www.ninjaone.com\/fr\/\" target=\"_blank\" rel=\"noopener\">NinjaOne<\/a> peuvent am\u00e9liorer davantage ce processus en int\u00e9grant ces scripts dans des flux de travail d&rsquo;automatisation plus grands, fournissant ainsi une plateforme de gestion informatique compl\u00e8te qui permet des op\u00e9rations proactives et efficaces.<\/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":"","_lmt_disable":""},"operating_system":[4212],"use_cases":[4281],"class_list":["post-353635","script_hub","type-script_hub","status-publish","hentry","script_hub_category-windows","use_cases-configuration-generale"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/script_hub\/353635","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/script_hub"}],"about":[{"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/types\/script_hub"}],"author":[{"embeddable":true,"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/users\/35"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/comments?post=353635"}],"wp:attachment":[{"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/media?parent=353635"}],"wp:term":[{"taxonomy":"script_hub_category","embeddable":true,"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/operating_system?post=353635"},{"taxonomy":"use_cases","embeddable":true,"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/use_cases?post=353635"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}