{"id":353669,"date":"2024-08-27T16:03:19","date_gmt":"2024-08-27T16:03:19","guid":{"rendered":"https:\/\/www.ninjaone.com\/script-hub\/etat-de-la-restauration-du-systeme\/"},"modified":"2024-10-13T19:10:04","modified_gmt":"2024-10-13T19:10:04","slug":"etat-de-la-restauration-du-systeme","status":"publish","type":"script_hub","link":"https:\/\/www.ninjaone.com\/fr\/script-hub\/etat-de-la-restauration-du-systeme\/","title":{"rendered":"Comment obtenir l&rsquo;\u00e9tat de la restauration du syst\u00e8me avec PowerShell pour les professionnels de l&rsquo;informatique"},"content":{"rendered":"<p><span data-sheets-root=\"1\" data-sheets-value=\"{&quot;1&quot;:2,&quot;2&quot;:&quot;Get system restore status powershell&quot;}\" data-sheets-userformat=\"{&quot;2&quot;:769,&quot;3&quot;:{&quot;1&quot;:0},&quot;11&quot;:4,&quot;12&quot;:0}\">Vous voulez savoir <strong>comment obtenir l&rsquo;\u00e9tat de la restauration du syst\u00e8me avec PowerShell<\/strong>? <\/span>La restauration du syst\u00e8me est une fonction essentielle des syst\u00e8mes d&rsquo;exploitation Windows, qui offre un filet de s\u00e9curit\u00e9 aux utilisateurs en leur permettant de r\u00e9tablir l&rsquo;\u00e9tat ant\u00e9rieur de leur syst\u00e8me en cas de dysfonctionnement ou de modifications ind\u00e9sirables.<\/p>\n<p>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>, la surveillance de l&rsquo;\u00e9tat de la restauration du syst\u00e8me sur plusieurs appareils est essentielle pour maintenir la sant\u00e9 et la fiabilit\u00e9 du syst\u00e8me. Le <a href=\"https:\/\/www.ninjaone.com\/it-hub\/endpoint-management\/what-is-powershell\/\" target=\"_blank\" rel=\"noopener\">script PowerShell<\/a> fourni est un outil puissant con\u00e7u pour v\u00e9rifier l&rsquo;\u00e9tat de la restauration du syst\u00e8me sur un appareil et, \u00e9ventuellement, enregistrer le r\u00e9sultat dans un champ personnalis\u00e9.<\/p>\n<h2>Contexte<\/h2>\n<p>Dans un paysage o\u00f9 la stabilit\u00e9 du syst\u00e8me est primordiale, la restauration du syst\u00e8me offre un service pr\u00e9cieux en permettant une r\u00e9cup\u00e9ration rapide des d\u00e9faillances du syst\u00e8me. Pour les professionnels de l&rsquo;informatique, en particulier ceux qui g\u00e8rent de nombreux appareils, s&rsquo;assurer que la restauration du syst\u00e8me est activ\u00e9e peut permettre <a href=\"https:\/\/www.ninjaone.com\/it-hub\/it-service-management\/what-is-network-downtime\/\" target=\"_blank\" rel=\"noopener\">d&rsquo;\u00e9viter des temps d&rsquo;arr\u00eat importants<\/a> et des <a href=\"https:\/\/www.ninjaone.com\/fr\/sauvegarde-et-recuperation-des-donnees\/sauvegarde-de-fichiers-et-de-dossiers\/\" target=\"_blank\" rel=\"noopener\">pertes de donn\u00e9es<\/a>.<\/p>\n<p>Ce script simplifie le processus de v\u00e9rification de l&rsquo;\u00e9tat de la restauration du syst\u00e8me et s&rsquo;int\u00e8gre parfaitement \u00e0 NinjaOne, une solution de gestion informatique populaire, pour enregistrer l&rsquo;\u00e9tat dans un champ personnalis\u00e9 si n\u00e9cessaire.<\/p>\n<h2>Le script<\/h2>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"powershell\">#Requires -Version 5.1\r\n\r\n&lt;#\r\n.SYNOPSIS\r\n    Checks the status of System Restore on the device.\r\n.DESCRIPTION\r\n    Checks the status of System Restore on the device.\r\n    When a Custom Field is specified the results will be saved to the Custom Field as \"Enabled\" or \"Disabled\".\r\n\r\n.EXAMPLE\r\n    (No Parameters)\r\n    ## EXAMPLE OUTPUT WITHOUT PARAMS ##\r\n    [Info] System Restore is Disabled\r\n\r\nPARAMETER: -CustomFieldName \"SystemRestore\"\r\n    Saves the results to a custom field.\r\n.EXAMPLE\r\n    -CustomFieldName \"SystemRestore\"\r\n    ## EXAMPLE OUTPUT WITH CustomFieldName ##\r\n    [Info] Attempting to set Custom Field 'SystemRestore'.\r\n    [Info] Successfully set Custom Field 'SystemRestore'!\r\n    [Info] System Restore is Enabled\r\n\r\n.NOTES\r\n    Minimum OS Architecture Supported: Windows 10, Windows Server 2016\r\n    Release Notes: Renamed Script\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 Set-NinjaProperty {\r\n        [CmdletBinding()]\r\n        Param(\r\n            [Parameter(Mandatory = $True)]\r\n            [String]$Name,\r\n            [Parameter()]\r\n            [String]$Type,\r\n            [Parameter(Mandatory = $True, ValueFromPipeline = $True)]\r\n            $Value,\r\n            [Parameter()]\r\n            [String]$DocumentName\r\n        )\r\n    \r\n        $Characters = $Value | Measure-Object -Character | Select-Object -ExpandProperty Characters\r\n        if ($Characters -ge 10000) {\r\n            throw [System.ArgumentOutOfRangeException]::New(\"Character limit exceeded, value is greater than 10,000 characters.\")\r\n        }\r\n        \r\n        # If we're requested to set the field value for a Ninja document we'll specify it here.\r\n        $DocumentationParams = @{}\r\n        if ($DocumentName) { $DocumentationParams[\"DocumentName\"] = $DocumentName }\r\n        \r\n        # This is a list of valid fields that can be set. If no type is given, it will be assumed that the input doesn't need to be changed.\r\n        $ValidFields = \"Attachment\", \"Checkbox\", \"Date\", \"Date or Date Time\", \"Decimal\", \"Dropdown\", \"Email\", \"Integer\", \"IP Address\", \"MultiLine\", \"MultiSelect\", \"Phone\", \"Secure\", \"Text\", \"Time\", \"URL\", \"WYSIWYG\"\r\n        if ($Type -and $ValidFields -notcontains $Type) { Write-Warning \"$Type is an invalid type! Please check here for valid types. https:\/\/ninjarmm.zendesk.com\/hc\/en-us\/articles\/16973443979789-Command-Line-Interface-CLI-Supported-Fields-and-Functionality\" }\r\n        \r\n        # The field below requires additional information to be set\r\n        $NeedsOptions = \"Dropdown\"\r\n        if ($DocumentName) {\r\n            if ($NeedsOptions -contains $Type) {\r\n                # We'll redirect the error output to the success stream to make it easier to error out if nothing was found or something else went wrong.\r\n                $NinjaPropertyOptions = Ninja-Property-Docs-Options -AttributeName $Name @DocumentationParams 2&gt;&amp;1\r\n            }\r\n        }\r\n        else {\r\n            if ($NeedsOptions -contains $Type) {\r\n                $NinjaPropertyOptions = Ninja-Property-Options -Name $Name 2&gt;&amp;1\r\n            }\r\n        }\r\n        \r\n        # If an error is received it will have an exception property, the function will exit with that error information.\r\n        if ($NinjaPropertyOptions.Exception) { throw $NinjaPropertyOptions }\r\n        \r\n        # The below types require values not typically given in order to be set. The below code will convert whatever we're given into a format ninjarmm-cli supports.\r\n        switch ($Type) {\r\n            \"Checkbox\" {\r\n                # While it's highly likely we were given a value like \"True\" or a boolean datatype it's better to be safe than sorry.\r\n                $NinjaValue = [System.Convert]::ToBoolean($Value)\r\n            }\r\n            \"Date or Date Time\" {\r\n                # Ninjarmm-cli expects the GUID of the option to be selected. Therefore, the given value will be matched with a GUID.\r\n                $Date = (Get-Date $Value).ToUniversalTime()\r\n                $TimeSpan = New-TimeSpan (Get-Date \"1970-01-01 00:00:00\") $Date\r\n                $NinjaValue = $TimeSpan.TotalSeconds\r\n            }\r\n            \"Dropdown\" {\r\n                # Ninjarmm-cli is expecting the guid of the option we're trying to select. So we'll match up the value we were given with a guid.\r\n                $Options = $NinjaPropertyOptions -replace '=', ',' | ConvertFrom-Csv -Header \"GUID\", \"Name\"\r\n                $Selection = $Options | Where-Object { $_.Name -eq $Value } | Select-Object -ExpandProperty GUID\r\n        \r\n                if (-not $Selection) {\r\n                    throw [System.ArgumentOutOfRangeException]::New(\"Value is not present in dropdown\")\r\n                }\r\n        \r\n                $NinjaValue = $Selection\r\n            }\r\n            default {\r\n                # All the other types shouldn't require additional work on the input.\r\n                $NinjaValue = $Value\r\n            }\r\n        }\r\n        \r\n        # We'll need to set the field differently depending on if its a field in a Ninja Document or not.\r\n        if ($DocumentName) {\r\n            $CustomField = Ninja-Property-Docs-Set -AttributeName $Name -AttributeValue $NinjaValue @DocumentationParams 2&gt;&amp;1\r\n        }\r\n        else {\r\n            $CustomField = Ninja-Property-Set -Name $Name -Value $NinjaValue 2&gt;&amp;1\r\n        }\r\n        \r\n        if ($CustomField.Exception) {\r\n            throw $CustomField\r\n        }\r\n    }\r\n    if ($env:customFieldName -and $env:customFieldName -ne \"null\") {\r\n        $CustomFieldName = $env:customFieldName\r\n    }\r\n}\r\nprocess {\r\n    # If the registry value is 1, System Restore is enabled.\r\n    $RegValue = Get-ItemPropertyValue -Path \"HKLM:\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\SystemRestore\\\" -Name \"RPSessionInterval\" -ErrorAction SilentlyContinue\r\n\r\n    $SystemRestoreStatus = if ($RegValue -ge 1) {\r\n        # If either of the above conditions are met, System Restore is enabled.\r\n        Write-Output \"Enabled\"\r\n    }\r\n    else {\r\n        Write-Output \"Disabled\"\r\n    }\r\n\r\n    # If a Custom Field Name is provided, set the Custom Field with the System Restore Status.\r\n    if ($CustomFieldName) {\r\n        try {\r\n            Write-Host \"[Info] Attempting to set Custom Field '$CustomFieldName'.\"\r\n            Set-NinjaProperty -Name $CustomFieldName -Value $SystemRestoreStatus\r\n            Write-Host \"[Info] Successfully set Custom Field '$CustomFieldName'!\"\r\n        }\r\n        catch {\r\n            Write-Host \"[Error] Failed to set Custom Field '$CustomFieldName'.\"\r\n        }\r\n    }\r\n    Write-Host \"[Info] System Restore is $SystemRestoreStatus\"\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>Voyons maintenant comment fonctionne ce script PowerShell.<\/p>\n<h3><em>Initialisation du script<\/em><\/h3>\n<p>Le script commence par des m\u00e9tadonn\u00e9es sous forme de commentaires, d\u00e9taillant son objectif, des exemples d&rsquo;utilisation et les syst\u00e8mes d&rsquo;exploitation pris en charge. Il prend en charge Windows 10 et Windows Server 2016, ce qui indique qu&rsquo;il est con\u00e7u pour les environnements modernes.<\/p>\n<p>Cette ligne indique que le script n\u00e9cessite la version 5.1 ou sup\u00e9rieure de PowerShell.<\/p>\n<h3><em>Param\u00e8tres<\/em><\/h3>\n<p>Le script d\u00e9finit un seul param\u00e8tre facultatif, CustomFieldName, qui permet aux utilisateurs de sp\u00e9cifier un nom de champ personnalis\u00e9 dans lequel le statut sera enregistr\u00e9.<\/p>\n<h3><em>Fonction d&rsquo;aide : Set-NinjaProperty<\/em><\/h3>\n<p>Le script comprend une fonction d&rsquo;aide, Set-NinjaProperty, qui est responsable de la d\u00e9finition de la valeur du champ personnalis\u00e9 dans NinjaOne. Cette fonction traite diff\u00e9rents types de donn\u00e9es et valide les entr\u00e9es en fonction de crit\u00e8res pr\u00e9d\u00e9finis.<\/p>\n<h3><em>Logique principale<\/em><\/h3>\n<p>Le script v\u00e9rifie ensuite le registre pour d\u00e9terminer si la restauration du syst\u00e8me est activ\u00e9e. Il lit la valeur RPSessionInterval dans la cl\u00e9 de registre HKLM:NSOFTWARENMicrosoftNWindows NTNCurrentVersionNSystemRestore. Si la valeur est sup\u00e9rieure ou \u00e9gale \u00e0 1, la restauration du syst\u00e8me est consid\u00e9r\u00e9e comme activ\u00e9e.<\/p>\n<p>Si un nom de champ personnalis\u00e9 est fourni, le script tente de d\u00e9finir ce champ avec l&rsquo;\u00e9tat de la restauration du syst\u00e8me \u00e0 l&rsquo;aide de la fonction Set-NinjaProperty.<\/p>\n<h2>Cas d&rsquo;utilisation potentiels<\/h2>\n<p>Imaginez un professionnel de l&rsquo;informatique qui g\u00e8re un parc d&rsquo;appareils Windows pour une entreprise de taille moyenne. Il est essentiel de s&rsquo;assurer que la restauration du syst\u00e8me est activ\u00e9e sur tous les appareils pour une r\u00e9cup\u00e9ration rapide en cas de probl\u00e8mes potentiels. Le professionnel peut utiliser ce script en conjonction avec NinjaOne pour v\u00e9rifier et enregistrer r\u00e9guli\u00e8rement l&rsquo;\u00e9tat de la restauration du syst\u00e8me sur tous les appareils, ce qui lui permet d&rsquo;agir rapidement si la fonction est d\u00e9sactiv\u00e9e sur l&rsquo;un d&rsquo;entre eux.<\/p>\n<h2>Comparaisons<\/h2>\n<p>Il existe plusieurs m\u00e9thodes pour v\u00e9rifier l&rsquo;\u00e9tat de la restauration du syst\u00e8me, par exemple en utilisant l&rsquo;interface graphique ou diff\u00e9rents utilitaires de ligne de commande. Cependant, ce script PowerShell offre une approche rationalis\u00e9e et automatis\u00e9e qui s&rsquo;int\u00e8gre \u00e0 NinjaOne, offrant ainsi une solution \u00e9volutive aux professionnels de l&rsquo;informatique qui g\u00e8rent plusieurs syst\u00e8mes. Contrairement aux contr\u00f4les manuels, ce script peut \u00eatre programm\u00e9 et ex\u00e9cut\u00e9 sur tous les appareils, ce qui permet de gagner du temps et de <a href=\"https:\/\/www.ninjaone.com\/blog\/how-human-error-relates-to-cybersecurity-risks\/\" target=\"_blank\" rel=\"noopener\">r\u00e9duire les erreurs humaines<\/a>.<\/p>\n<h2>FAQ<\/h2>\n<h3>Q\u00a0: Ce script peut-il activer la restauration du syst\u00e8me si elle est d\u00e9sactiv\u00e9e ?<\/h3>\n<p>R\u00a0: Non, le script est con\u00e7u pour v\u00e9rifier l&rsquo;\u00e9tat de la restauration du syst\u00e8me et l&rsquo;enregistrer. L&rsquo;activation de la restauration du syst\u00e8me n\u00e9cessiterait des commandes suppl\u00e9mentaires.<\/p>\n<h3>Q\u00a0: Le script est-il compatible avec les anciennes versions de Windows ?<\/h3>\n<p>R\u00a0: Le script est con\u00e7u pour Windows 10 et Windows Server 2016. La compatibilit\u00e9 avec les versions ant\u00e9rieures n&rsquo;est pas garantie.<\/p>\n<h3>Q\u00a0: Que se passe-t-il si le nom du champ personnalis\u00e9 n&rsquo;est pas fourni ?<\/h3>\n<p>R\u00a0: Si aucun nom de champ personnalis\u00e9 n&rsquo;est fourni, le script affichera simplement l&rsquo;\u00e9tat de la restauration du syst\u00e8me sans tenter de l&rsquo;enregistrer.<\/p>\n<h2>Implications<\/h2>\n<p>Conna\u00eetre l&rsquo;\u00e9tat de la restauration du syst\u00e8me sur tous les appareils g\u00e9r\u00e9s permet aux professionnels de l&rsquo;informatique de s&rsquo;assurer que les syst\u00e8mes sont r\u00e9cup\u00e9rables en cas de d\u00e9faillance. Cette approche proactive peut consid\u00e9rablement am\u00e9liorer la fiabilit\u00e9 du syst\u00e8me et r\u00e9duire l&rsquo;impact des probl\u00e8mes potentiels.<\/p>\n<h2>Recommandations<\/h2>\n<p>Lorsque vous utilisez ce script, veillez \u00e0 ce qu&rsquo;il soit ex\u00e9cut\u00e9 r\u00e9guli\u00e8rement afin de suivre l&rsquo;\u00e9tat de la restauration du syst\u00e8me. L&rsquo;int\u00e9grer dans une strat\u00e9gie plus large de surveillance et de gestion du syst\u00e8me afin d&rsquo;en pr\u00e9server la sant\u00e9. Testez toujours le script dans un environnement contr\u00f4l\u00e9 avant de le d\u00e9ployer sur plusieurs appareils afin d&rsquo;\u00e9viter les probl\u00e8mes inattendus.<\/p>\n<h2>Conclusion<\/h2>\n<p>NinjaOne offre des outils robustes pour la gestion informatique, et des scripts comme celui-ci renforcent ses capacit\u00e9s en fournissant des solutions <a href=\"https:\/\/www.ninjaone.com\/fr\/rmm\/automatisation-informatique\" target=\"_blank\" rel=\"noopener\">automatis\u00e9es<\/a> et \u00e9volutives pour les contr\u00f4les de routine. S&rsquo;assurer que la restauration du syst\u00e8me est activ\u00e9e sur tous les appareils n&rsquo;est qu&rsquo;une des nombreuses t\u00e2ches qui peuvent \u00eatre rationalis\u00e9es avec NinjaOne, aidant les professionnels de l&rsquo;informatique \u00e0 maintenir l&rsquo;int\u00e9grit\u00e9, la fiabilit\u00e9 et <a href=\"https:\/\/www.ninjaone.com\/fr\/efficacite\" target=\"_blank\" rel=\"noopener\">l&rsquo;efficacit\u00e9<\/a> du syst\u00e8me.<\/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":[4284],"class_list":["post-353669","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\/353669","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=353669"}],"wp:attachment":[{"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/media?parent=353669"}],"wp:term":[{"taxonomy":"script_hub_category","embeddable":true,"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/operating_system?post=353669"},{"taxonomy":"use_cases","embeddable":true,"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/use_cases?post=353669"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}