{"id":534650,"date":"2025-09-30T16:47:50","date_gmt":"2025-09-30T16:47:50","guid":{"rendered":"https:\/\/www.ninjaone.com\/?post_type=script_hub&#038;p=534650"},"modified":"2025-09-30T16:47:50","modified_gmt":"2025-09-30T16:47:50","slug":"mettre-a-jour-la-description-des-appareils-avec-powershell","status":"publish","type":"script_hub","link":"https:\/\/www.ninjaone.com\/fr\/script-hub\/mettre-a-jour-la-description-des-appareils-avec-powershell\/","title":{"rendered":"Comment mettre \u00e0 jour la description des appareils avec PowerShell"},"content":{"rendered":"<p>La gestion et le maintien d&rsquo;une convention de d\u00e9nomination constante pour les actifs informatiques sont essentiels pour optimiser les op\u00e9rations, garantir l&rsquo;exactitude de l&rsquo;inventaire et assurer la conformit\u00e9. Parmi les diff\u00e9rents attributs de m\u00e9tadonn\u00e9es assign\u00e9s \u00e0 un syst\u00e8me Windows, la description des appareils est souvent n\u00e9glig\u00e9e.<\/p>\n<p>Cependant, ce petit \u00e9l\u00e9ment d&rsquo;information peut consid\u00e9rablement am\u00e9liorer la clart\u00e9 dans les environnements informatiques, en particulier lorsqu&rsquo;il est int\u00e9gr\u00e9 \u00e0 des plateformes de suivi des actifs et de gestion \u00e0 distance. Dans cet article, nous verrons <strong>comment<\/strong> <strong>mettre \u00e0 jour la description des appareils avec PowerShell<\/strong>, un petit changement qui peut am\u00e9liorer <a href=\"https:\/\/www.ninjaone.com\/fr\/efficacite\/\">l&rsquo;efficacit\u00e9<\/a> administrative.<\/p>\n<h2>Contexte<\/h2>\n<p>Dans de nombreux environnements, en particulier ceux qui sont g\u00e9r\u00e9s par des <a href=\"https:\/\/www.ninjaone.com\/fr\/quest-ce-quun-msp\/\">fournisseurs de services g\u00e9r\u00e9s (MSP)<\/a> ou des \u00e9quipes informatiques internes, les m\u00e9tadonn\u00e9es des appareils jouent un r\u00f4le crucial dans l&rsquo;identification et l&rsquo;organisation des appareils. Le champ \u00ab\u00a0description de l&rsquo;appareil\u00a0\u00bb est utilis\u00e9 pour fournir des informations contextuelles sur l&rsquo;appareil, telles que sa fonction ou l&rsquo;utilisateur auquel il a \u00e9t\u00e9 attribu\u00e9. Malheureusement, la mise \u00e0 jour manuelle de cette description par le biais d&rsquo;interfaces graphiques est inefficace, en particulier \u00e0 grande \u00e9chelle.<\/p>\n<p>Ce script <a href=\"https:\/\/www.ninjaone.com\/it-hub\/endpoint-management\/what-is-powershell\/\">PowerShell<\/a> comble cette lacune en permettant aux professionnels de l&rsquo;informatique d&rsquo;automatiser le processus de mise \u00e0 jour ou d&rsquo;effacement des descriptions des appareils. En prenant en charge les entr\u00e9es de variables d&rsquo;environnement et en validant leur utilisation correcte, il garantit une ex\u00e9cution fiable, qu&rsquo;elle soit d\u00e9ploy\u00e9e de mani\u00e8re interactive ou par le biais de plateformes de gestion \u00e0 distance telles que NinjaOne.<\/p>\n<h2>Le script<\/h2>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"powershell\">#Requires -Version 4\r\n\r\n&lt;#\r\n.SYNOPSIS\r\n    Updates the current device description.\r\n.DESCRIPTION\r\n    Updates the current device description.\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.EXAMPLE\r\n    -Description \"Kitchen Computer\"\r\n    \r\n    Attempting to set device description to 'Kitchen Computer'.\r\n\r\n\r\n    SystemDirectory : C:\\Windows\\system32\r\n    Organization    : vm.net\r\n    BuildNumber     : 9600\r\n    RegisteredUser  : NA\r\n    SerialNumber    : 00252-70000-00000-AA382\r\n    Version         : 6.3.9600\r\n\r\n    Successfully set device description to 'Kitchen Computer'.\r\n\r\n\r\nPARAMETER: -Description \"ReplaceMeWithADeviceDescription\"\r\n    Specify the device description you would like to set.\r\n\r\nPARAMETER: -ClearDescription\r\n    Clear the current device description.\r\n\r\n.NOTES\r\n    Minimum OS Architecture Supported: Windows 10, Windows Server 2012 R2\r\n    Release Notes: Initial Release\r\n#&gt;\r\n\r\n[CmdletBinding()]\r\nparam (\r\n    [Parameter()]\r\n    [String]$Description,\r\n    [Parameter()]\r\n    [Switch]$ClearDescription = [System.Convert]::ToBoolean($env:clearDeviceDescription)\r\n)\r\n\r\nbegin {\r\n    if($env:deviceDescription -and $env:deviceDescription -notlike \"null\"){ $Description = $env:deviceDescription }\r\n\r\n    # Trim any leading or trailing whitespace from the description, if it exists\r\n    if ($Description) {\r\n        $Description = $Description.Trim()\r\n    }\r\n\r\n    # Ensure that a description is provided if clearing the description is not requested\r\n    if (!$Description -and !$ClearDescription) {\r\n        Write-Host -Object \"[Error] You must provide a description to set.\"\r\n        exit 1\r\n    }\r\n\r\n    # Ensure that both clearing and setting the description are not requested simultaneously\r\n    if ($ClearDescription -and $Description) {\r\n        Write-Host -Object \"[Error] You cannot clear and set the device description at the same time.\"\r\n        exit 1\r\n    }\r\n\r\n    # Clear the description if requested\r\n    if ($ClearDescription) {\r\n        $Description = $Null\r\n    }\r\n\r\n    # Measure the length of the description\r\n    $DescriptionLength = $Description | Measure-Object -Character | Select-Object -ExpandProperty Characters\r\n    # Warn if the description is longer than 40 characters\r\n    if ($DescriptionLength -ge 40) {\r\n        Write-Host -Object \"[Warning] The description '$Description' is greater than 40 characters. It may appear trimmed in certain situations.\"\r\n    }\r\n\r\n    # Function to check if the script is running with elevated (administrator) privileges\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\n    if (!$ExitCode) {\r\n        $ExitCode = 0\r\n    }\r\n}\r\nprocess {\r\n    # Check if the script is running with elevated (administrator) privileges\r\n    if (!(Test-IsElevated)) {\r\n        Write-Host -Object \"[Error] Access Denied. Please run with Administrator privileges.\"\r\n        exit 1\r\n    }\r\n\r\n    try {\r\n        Write-Host -Object \"Attempting to set device description to '$Description'.\"\r\n        # Determine the PowerShell version and set the operating system description accordingly\r\n        if ($PSVersionTable.PSVersion.Major -lt 5) {\r\n            # Use Get-WmiObject for PowerShell versions less than 5\r\n            Get-WmiObject -Class Win32_OperatingSystem -ErrorAction Stop | Set-WmiInstance -Property @{ 'Description' = $Description } -ErrorAction Stop\r\n        }\r\n        else {\r\n            # Use Get-CimInstance for PowerShell version 5 or greater\r\n            Get-CimInstance -Class Win32_OperatingSystem -ErrorAction Stop | Set-CimInstance -Property @{ 'Description' = $Description } -ErrorAction Stop\r\n        }\r\n        Write-Host -Object \"Successfully set device description to '$Description'.\"\r\n    }\r\n    catch {\r\n        # Handle any errors that occur while retrieving the device description\r\n        Write-Host -Object \"[Error] Failed to set the device description.\"\r\n        Write-Host -Object \"[Error] $($_.Exception.Message)\"\r\n        exit 1\r\n    }\r\n\r\n    exit $ExitCode\r\n}\r\nend {\r\n    \r\n    \r\n    \r\n}<\/pre>\n<p>&nbsp;<\/p>\n\n<h2>Description d\u00e9taill\u00e9e<\/h2>\n<p>Examinons le script ligne par ligne pour comprendre son fonctionnement et l&rsquo;importance de chaque section.<\/p>\n<h3>Traitement des param\u00e8tres<\/h3>\n<p>powershell<\/p>\n<p>CopyEdit<\/p>\n<p>param (<\/p>\n<p>[String]$Description,<\/p>\n<p>[Switch]$ClearDescription = [System.Convert]::ToBoolean($env:clearDeviceDescription)<\/p>\n<p>)<\/p>\n<p>Le script accepte deux param\u00e8tres\u00a0:<\/p>\n<ul>\n<li>$Description: La description de l&rsquo;appareil souhait\u00e9.<\/li>\n<li>$ClearDescription: Un commutateur pour effacer la description actuelle, \u00e9ventuellement d\u00e9fini par une variable d&rsquo;environnement.<\/li>\n<\/ul>\n<h3>Logique de pr\u00e9traitement<\/h3>\n<p>powershell<\/p>\n<p>CopyEdit<\/p>\n<p>if($env:deviceDescription -and $env:deviceDescription -notlike \u00ab\u00a0null\u00a0\u00bb){ $Description = $env:deviceDescription }<\/p>\n<p>Cette ligne v\u00e9rifie si une description d&rsquo;appareil est fournie par l&rsquo;environnement et l&rsquo;utilise si elle est pr\u00e9sente. Il s&rsquo;assure \u00e9galement que les espaces blancs sont coup\u00e9s et valide que l&rsquo;utilisateur n&rsquo;essaie pas de d\u00e9finir et d&rsquo;effacer la description simultan\u00e9ment, une erreur courante que le script g\u00e8re de mani\u00e8re \u00e9l\u00e9gante.<\/p>\n<h3>V\u00e9rification de la longueur de la description<\/h3>\n<p>powershell<\/p>\n<p>CopyEdit<\/p>\n<p>$DescriptionLength = $Description | Measure-Object -Character | Select-Object -ExpandProperty Characters<\/p>\n<p>if ($DescriptionLength -ge 40) {<\/p>\n<p>Write-Host -Object \u00ab\u00a0[Warning] &#8230; may appear trimmed &#8230;\u00a0\u00bb<\/p>\n<p>}<\/p>\n<p>Ici, le script avertit l&rsquo;utilisateur si la description d\u00e9passe 40 caract\u00e8res &#8211; une limite pratique due aux contraintes de rendu de l&rsquo;interface utilisateur dans de nombreux outils de gestion.<\/p>\n<h3>Validation des privil\u00e8ges<\/h3>\n<p>Le script contient une fonction personnalis\u00e9e, Test-IsElevated, qui permet de v\u00e9rifier qu&rsquo;il s&rsquo;ex\u00e9cute avec des privil\u00e8ges d&rsquo;administrateur. C&rsquo;est essentiel, car l&rsquo;\u00e9criture dans les propri\u00e9t\u00e9s du syst\u00e8me d&rsquo;exploitation n\u00e9cessite des autorisations \u00e9lev\u00e9es.<\/p>\n<h3>Logique d&rsquo;ex\u00e9cution principale<\/h3>\n<p>Selon la version de PowerShell, le script utilise Set-WmiInstance ou Set-CimInstance pour mettre \u00e0 jour la propri\u00e9t\u00e9 Win32_OperatingSystem.Description. Cette bifurcation garantit la compatibilit\u00e9 entre les versions de Windows et les versions de PowerShell.<\/p>\n<h3>Gestion des erreurs<\/h3>\n<p>Un bloc try-catch performant g\u00e8re les \u00e9checs de mani\u00e8re \u00e9l\u00e9gante, en fournissant des informations permettant de diagnostiquer les probl\u00e8mes sans faire planter le script de mani\u00e8re inattendue.<\/p>\n<h2>Cas d&rsquo;utilisation potentiels<\/h2>\n<p><strong>\u00c9tude de cas<\/strong>\u00a0: Un fournisseur de services g\u00e9r\u00e9s (MSP) g\u00e8re plus de 200 terminaux pour diff\u00e9rents clients. Chaque machine doit refl\u00e9ter son objectif de d\u00e9ploiement (par exemple, \u00ab\u00a0terminal d&rsquo;accueil\u00a0\u00bb ou \u00ab\u00a0poste de travail financier\u00a0\u00bb). En int\u00e9grant ce script au module de script de NinjaOne et en passant des valeurs via des variables d&rsquo;environnement, les techniciens peuvent mettre \u00e0 jour dynamiquement la description des appareils lors de l&rsquo;int\u00e9gration ou des audits post-d\u00e9ploiement, am\u00e9liorant ainsi la visibilit\u00e9 de l&rsquo;actif dans les tableaux de bord des clients.<\/p>\n<h2>Comparaisons<\/h2>\n<h3>M\u00e9thode manuelle avec l&rsquo;interface graphique<\/h3>\n<ul>\n<li>Il faut se connecter \u00e0 chaque appareil.<\/li>\n<li>Prend du temps et est source d&rsquo;erreurs.<\/li>\n<\/ul>\n<h3>Strat\u00e9gie de groupe<\/h3>\n<ul>\n<li>Il n&rsquo;est pas possible de modifier directement le champ de description du syst\u00e8me d&rsquo;exploitation.<\/li>\n<li>Options de personnalisation limit\u00e9es.<\/li>\n<\/ul>\n<h3>Script PowerShell<\/h3>\n<ul>\n<li>Rapide, automatis\u00e9 et \u00e9volutif.<\/li>\n<li>S&rsquo;int\u00e8gre facilement dans les plateformes RMM telles que NinjaOne.<\/li>\n<li>Prise en charge de l&rsquo;entr\u00e9e dynamique via des variables d&rsquo;environnement.<\/li>\n<\/ul>\n<h2>Questions fr\u00e9quentes<\/h2>\n<h3>Q\u00a0: Puis-je ex\u00e9cuter ce script \u00e0 distance ?<\/h3>\n<p>Oui. Tant que la session est \u00e9lev\u00e9e et qu&rsquo;elle dispose des autorisations n\u00e9cessaires, elle peut \u00eatre ex\u00e9cut\u00e9e via des shells distants ou des plateformes <a href=\"https:\/\/www.ninjaone.com\/fr\/blog\/definition-de-la-surveillance-et-gestion-a-distance\/\">RMM<\/a>.<\/p>\n<h3>Q\u00a0: Que se passe-t-il si la description de l&rsquo;appareil est trop longue ?<\/h3>\n<p>Le script l&rsquo;\u00e9tablira quand m\u00eame, mais un avertissement sera \u00e9mis. Le rendu de l&rsquo;interface utilisateur dans certains outils peut la tronquer.<\/p>\n<h3>Q\u00a0: Ce probl\u00e8me persistera-t-il apr\u00e8s un red\u00e9marrage ?<\/h3>\n<p>Oui. La description de l&rsquo;appareil d\u00e9finie ici est stock\u00e9e de mani\u00e8re persistante dans WMI et survit aux red\u00e9marrages.<\/p>\n<h3>Q\u00a0: Que se passe-t-il si j&rsquo;essaie de d\u00e9finir et d&rsquo;effacer la description en m\u00eame temps ?<\/h3>\n<p>Le script se termine par une erreur, ce qui garantit qu&rsquo;une seule op\u00e9ration est effectu\u00e9e par ex\u00e9cution.<\/p>\n<h2>Implications<\/h2>\n<p>La mise \u00e0 jour de la description du dispositif peut sembler mineure, mais elle a des implications administratives importantes. Des m\u00e9tadonn\u00e9es pr\u00e9cises sur les appareils am\u00e9liorent l&rsquo;audit de s\u00e9curit\u00e9, simplifient la gestion de l&rsquo;inventaire et am\u00e9liorent les scripts contextuels ou l&rsquo;application des strat\u00e9gies. Dans les environnements o\u00f9 les r\u00f4les sont attribu\u00e9s de mani\u00e8re dynamique ou r\u00e9affect\u00e9s r\u00e9guli\u00e8rement, ce champ permet de conna\u00eetre rapidement l&rsquo;utilisation des appareils, ce qui est essentiel pour le d\u00e9pannage et la conformit\u00e9.<\/p>\n<h2>Recommandations<\/h2>\n<ul>\n<li><strong>Ex\u00e9cuter en tant qu&rsquo;administrateur<\/strong>\u00a0: Ex\u00e9cutez toujours le script avec des privil\u00e8ges \u00e9lev\u00e9s pour \u00e9viter les erreurs d&rsquo;autorisation.<\/li>\n<li><strong>Int\u00e9gration avec les outils RMM<\/strong> : Sautez des param\u00e8tres \u00e0 l&rsquo;aide de variables d&rsquo;environnement pour une automatisation optimale.<\/li>\n<li><strong>Standardiser les descriptions<\/strong> : Utilisez une convention de d\u00e9nomination pour assurer la coh\u00e9rence de votre environnement.<\/li>\n<li><strong>Limiter la longueur<\/strong> : Dans la mesure du possible, les descriptions ne doivent pas d\u00e9passer 40 caract\u00e8res afin d&rsquo;\u00e9viter la troncature de l&rsquo;interface utilisateur.<\/li>\n<\/ul>\n<h2>Conclusion<\/h2>\n<p>Ce script PowerShell illustre comment une petite automatisation peut g\u00e9n\u00e9rer une efficacit\u00e9 op\u00e9rationnelle significative. Que vous g\u00e9riez 10 ou 10 000 terminaux, la mise \u00e0 jour programmatique de la description de l&rsquo;appareil permet de maintenir la clart\u00e9 et la coh\u00e9rence.<\/p>\n<p>Les utilisateurs de <a href=\"https:\/\/www.ninjaone.com\/fr\/\">NinjaOne<\/a> peuvent exploiter ce script dans le moteur de script de la plateforme, en injectant des variables de mani\u00e8re dynamique pour des mises \u00e0 jour pr\u00e9cises pendant les t\u00e2ches de routine, l&rsquo;onboarding ou la r\u00e9ponse aux incidents. C&rsquo;est un exemple parfait de la combinaison de la puissance de PowerShell et de la flexibilit\u00e9 de NinjaOne pour optimiser la gestion des terminaux.<\/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":[4281],"class_list":["post-534650","script_hub","type-script_hub","status-publish","hentry","script_hub_category-windows"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/script_hub\/534650","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=534650"}],"wp:attachment":[{"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/media?parent=534650"}],"wp:term":[{"taxonomy":"script_hub_category","embeddable":true,"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/operating_system?post=534650"},{"taxonomy":"use_cases","embeddable":true,"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/use_cases?post=534650"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}