{"id":353670,"date":"2024-08-27T16:05:06","date_gmt":"2024-08-27T16:05:06","guid":{"rendered":"https:\/\/www.ninjaone.com\/script-hub\/powershell-verifier-l-etat-des-services-windows\/"},"modified":"2024-10-13T19:10:10","modified_gmt":"2024-10-13T19:10:10","slug":"powershell-verifier-l-etat-des-services-windows","status":"publish","type":"script_hub","link":"https:\/\/www.ninjaone.com\/fr\/script-hub\/powershell-verifier-l-etat-des-services-windows\/","title":{"rendered":"Comment automatiser le contr\u00f4le et le d\u00e9marrage des services Windows avec PowerShell"},"content":{"rendered":"<p><span data-sheets-root=\"1\" data-sheets-value=\"{&quot;1&quot;:2,&quot;2&quot;:&quot;powershell check windows service status&quot;}\" data-sheets-userformat=\"{&quot;2&quot;:769,&quot;3&quot;:{&quot;1&quot;:0},&quot;11&quot;:4,&quot;12&quot;:0}\">Avec Powershell, apprendre \u00e0 <strong>v\u00e9rifier l&rsquo;\u00e9tat des services Windows<\/strong> et \u00e0 maintenir la<\/span>sant\u00e9 des services sur les machines Windows est crucial pour assurer le bon fonctionnement de tout environnement informatique. Les services qui sont configur\u00e9s pour d\u00e9marrer automatiquement mais qui ne s&rsquo;ex\u00e9cutent pas peuvent entra\u00eener des probl\u00e8mes de performance, des <a href=\"https:\/\/www.ninjaone.com\/it-hub\/it-service-management\/what-is-network-downtime\/\" target=\"_blank\" rel=\"noopener\">temps d&rsquo;arr\u00eat impr\u00e9vus du r\u00e9seau<\/a> et des inefficacit\u00e9s op\u00e9rationnelles.<\/p>\n<p>C&rsquo;est l\u00e0 que les <a href=\"https:\/\/www.ninjaone.com\/it-hub\/endpoint-management\/what-is-powershell\/\" target=\"_blank\" rel=\"noopener\">scripts PowerShell<\/a> s&rsquo;av\u00e8rent utiles, car ils offrent un moyen robuste et automatis\u00e9 de g\u00e9rer et de surveiller les services Windows. Dans ce article nous allons explorer un script PowerShell con\u00e7u pour signaler et d\u00e9marrer les services automatiques qui ne sont pas en cours d&rsquo;ex\u00e9cution, \u00e0 l&rsquo;exception de ceux qui sont d\u00e9finis comme \u00ab\u00a0D\u00e9marrage diff\u00e9r\u00e9\u00a0\u00bb ou \u00ab\u00a0D\u00e9marrage d\u00e9clench\u00e9\u00a0\u00bb.<\/p>\n<h2>Contexte<\/h2>\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>, le bon fonctionnement des services est une priorit\u00e9 absolue. Les services Windows peuvent parfois ne pas d\u00e9marrer pour diverses raisons, telles que des <a href=\"https:\/\/www.ninjaone.com\/rmm\/computer-configurations\/\" target=\"_blank\" rel=\"noopener\">probl\u00e8mes de configuration<\/a>, des conflits ou des limitations des ressources du syst\u00e8me.<\/p>\n<p>Ce script r\u00e9pond au besoin d&rsquo;une approche syst\u00e9matique pour identifier et red\u00e9marrer les services qui devraient \u00eatre en cours d&rsquo;ex\u00e9cution mais ne le sont pas. En automatisant ce processus, les \u00e9quipes informatiques peuvent gagner du temps et <a href=\"https:\/\/www.ninjaone.com\/blog\/how-human-error-relates-to-cybersecurity-risks\/\" target=\"_blank\" rel=\"noopener\">r\u00e9duire le risque d&rsquo;erreur humaine<\/a>.<\/p>\n<h2>Le script\u00a0:<\/h2>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"powershell\">#Requires -Version 5.1\r\n\r\n&lt;#\r\n.SYNOPSIS\r\n    Reports on or starts services for Automatic Services that are not currently running. Services set as 'Delayed Start' or 'Trigger Start' are ignored.\r\n.DESCRIPTION\r\n    Reports on or starts services for Automatic Services that are not currently running. Services set as 'Delayed Start' or 'Trigger Start' are ignored.\r\n.EXAMPLE\r\n    (No Parameters)\r\n    \r\n    Matching Services found!\r\n\r\n    Name    Description                                         \r\n    ----    -----------                                         \r\n    SysMain Maintains and improves system performance over time.\r\n\r\nPARAMETER: -IgnoreServices \"ExampleServiceName\"\r\n    A comma separated list of service names to ignore.\r\n\r\nPARAMETER: -StartFoundServices\r\n    Attempts to start any services found matching the criteria.\r\n\r\n.NOTES\r\n    Minimum OS Architecture Supported: Windows 10, Windows 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]$IgnoreServices,\r\n    [Parameter()]\r\n    [Switch]$StartFoundServices = [System.Convert]::ToBoolean($env:startFoundServices)\r\n)\r\n\r\nbegin {\r\n    # Replace script parameters with form variables\r\n    if($env:servicesToExclude -and $env:servicesToExclude -notlike \"null\"){ $IgnoreServices = $env:servicesToExclude }\r\n\r\n    # Get the last startup time of the operating system.\r\n    $LastBootDateTime = Get-CimInstance -ClassName Win32_OperatingSystem | Select-Object -ExpandProperty LastBootUpTime\r\n    if ($LastBootDateTime -gt $(Get-Date).AddMinutes(-15)) {\r\n        $Uptime = New-TimeSpan $LastBootDateTime (Get-Date) | Select-Object -ExpandProperty TotalMinutes\r\n        Write-Host \"Current uptime is $([math]::Round($Uptime)) minutes.\"\r\n        Write-Host \"[Error] Please wait at least 15 minutes after startup before running this script.\"\r\n        exit 1\r\n    }\r\n\r\n    # Define a function to test if the current user has 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    $ExitCode = 0\r\n}\r\nprocess {\r\n    # Check if the script is running with 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    # Define a string of characters that are invalid for service names.\r\n    $InvalidServiceNameCharacters = \"\\\\|\/|:\"\r\n    # Create a list to hold the names of services to ignore.\r\n    $ServicesToIgnore = New-Object System.Collections.Generic.List[string]\r\n\r\n    # If there are services to ignore and they are separated by commas, split the string into individual service names.\r\n    if ($IgnoreServices -and $IgnoreServices -match \",\") {\r\n        $IgnoreServices -split \",\" | ForEach-Object {\r\n            # Check each service name for invalid characters or excessive length.\r\n            if ($_.Trim() -match $InvalidServiceNameCharacters) {\r\n                Write-Host \"[Error] Service Name contains one of the invalid characters '\\\/:'. $_ is not a valid service to ignore.\"\r\n                $ExitCode = 1\r\n                return\r\n            }\r\n\r\n            if (($_.Trim()).Length -gt 256) {\r\n                Write-Host \"[Error] Service Name is greater than 256 characters. $_ is not a valid service to ignore. \"\r\n                $ExitCode = 1\r\n                return\r\n            }\r\n\r\n            # Add valid services to the ignore list.\r\n            $ServicesToIgnore.Add($_.Trim())\r\n        }\r\n    }\r\n    elseif ($IgnoreServices) {\r\n        # For a single service name, perform similar validation and add if valid.\r\n        $ValidService = $True\r\n\r\n        if ($IgnoreServices.Trim() -match $InvalidServiceNameCharacters) {\r\n            Write-Host \"[Error] Service Name contains one of the invalid characters '\\\/:'. '$IgnoreServices' is not a valid service to ignore. \"\r\n            $ExitCode = 1\r\n            $ValidService = $False\r\n        }\r\n\r\n        if (($IgnoreServices.Trim()).Length -gt 256) {\r\n            Write-Host \"[Error] Service Name is greater than 256 characters. '$IgnoreServices' is not a valid service to ignore. \"\r\n            $ExitCode = 1\r\n            $ValidService = $False\r\n        }\r\n\r\n        if ($ValidService) {\r\n            $ServicesToIgnore.Add($IgnoreServices.Trim())\r\n        }\r\n    }\r\n\r\n    # Create a list to hold non-running services that are set to start automatically.\r\n    $NonRunningAutoServices = New-Object System.Collections.Generic.List[object]\r\n    Get-Service | Where-Object { $_.StartType -like \"Automatic\" -and $_.Status -ne \"Running\" } | ForEach-Object {\r\n        $NonRunningAutoServices.Add($_)\r\n    }\r\n\r\n    # Remove services from the list that have triggers or are set to delayed start,\r\n    if ($NonRunningAutoServices.Count -gt 0) {\r\n        $TriggerServices = Get-ChildItem -Path \"Registry::HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\*\\*\" -ErrorAction SilentlyContinue | Where-Object { $_.Name -match \"TriggerInfo\" }\r\n        $TriggerServices = $TriggerServices | Select-Object -ExpandProperty PSParentPath | Split-Path -Leaf\r\n        foreach ($TriggerService in $TriggerServices) {\r\n            $NonRunningAutoServices.Remove(($NonRunningAutoServices | Where-Object { $_.ServiceName -match $TriggerService })) | Out-Null\r\n        }\r\n\r\n        $DelayedStartServices = Get-ItemProperty -Path \"Registry::HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\*\" | Where-Object { $_.DelayedAutoStart -eq 1 }\r\n        $DelayedStartServices = $DelayedStartServices | Select-Object -ExpandProperty PSChildName\r\n        foreach ($DelayedStartService in $DelayedStartServices) {\r\n            $NonRunningAutoServices.Remove(($NonRunningAutoServices | Where-Object { $_.ServiceName -match $DelayedStartService })) | Out-Null\r\n        }\r\n    }\r\n\r\n    # Remove explicitly ignored services from the list of non-running automatic services.\r\n    if ($ServicesToIgnore.Count -gt 0 -and $NonRunningAutoServices.Count -gt 0) {\r\n        foreach ($ServiceToIgnore in $ServicesToIgnore) {\r\n            if ($NonRunningAutoServices.ServiceName -contains $ServiceToIgnore) {\r\n                $NonRunningAutoServices.Remove(($NonRunningAutoServices | Where-Object { $_.ServiceName -match [Regex]::Escape($ServiceToIgnore) })) | Out-Null\r\n            }\r\n        }\r\n    }\r\n\r\n    # If there are still non-running automatic services left, display their names.\r\n    # Otherwise, indicate no stopped automatic services were detected.\r\n    if ($NonRunningAutoServices.Count -gt 0) {\r\n        Write-Host \"Matching Services found!\"\r\n\r\n        # Add Description to report.\r\n        $ServicesReport = New-Object System.Collections.Generic.List[object]\r\n        $NonRunningAutoServices | ForEach-Object {\r\n            $Description = Get-CimInstance -ClassName Win32_Service -Filter \"Name = '$($_.ServiceName)'\" | Select-Object @{\r\n                Name       = \"Description\"\r\n                Expression = {\r\n                    $Characters = $_.Description | Measure-Object -Character | Select-Object -ExpandProperty Characters\r\n                    if ($Characters -gt 100) {\r\n                        \"$(($_.Description).SubString(0,100))...\"\r\n                    }\r\n                    else {\r\n                        $_.Description\r\n                    }\r\n                }\r\n            }\r\n            $ServicesReport.Add(\r\n                [PSCustomObject]@{\r\n                    Name = $_.ServiceName\r\n                    Description = $Description | Select-Object -ExpandProperty Description\r\n                }\r\n            )\r\n        }\r\n\r\n        # Output report to activity log.\r\n        $ServicesReport | Sort-Object Name | Format-Table -Property Name,Description -AutoSize | Out-String | Write-Host\r\n    }\r\n    else {\r\n        Write-Host \"No stopped automatic services detected!\"\r\n    }\r\n\r\n    # Exit the script if there are no services to start or if starting services is not requested.\r\n    if (!$StartFoundServices -or !($NonRunningAutoServices.Count -gt 0)) {\r\n        exit $ExitCode\r\n    }\r\n\r\n    # Attempt to start each non-running automatic service up to three times.\r\n    # Log success or error messages accordingly.\r\n    $NonRunningAutoServices | ForEach-Object {\r\n        Write-Host \"`nAttempting to start $($_.ServiceName).\"\r\n        $Attempt = 1\r\n        while ($Attempt -le 3) {\r\n            Write-Host -Object \"Attempt: $Attempt\"\r\n            try {\r\n                $_ | Start-Service -ErrorAction Stop\r\n                Write-Host -Object \"Successfully started $($_.ServiceName).\"\r\n                $Attempt = 4\r\n            }\r\n            catch {\r\n                Write-Host -Object \"[Error] $($_.Exception.Message)\"\r\n                if ($Attempt -eq 3) { $ExitCode = 1 }\r\n            }\r\n            $Attempt++\r\n        }\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<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>Nous allons nous plonger dans le script pour en comprendre le fonctionnement \u00e9tape par \u00e9tape.<\/p>\n<ol>\n<li><strong> Initialisation du script et param\u00e8tres :<\/strong> Le script commence par d\u00e9finir son objectif et ses param\u00e8tres. Elle accepte deux param\u00e8tres facultatifs : -IgnoreServices, une liste de services \u00e0 ignorer s\u00e9par\u00e9e par des virgules, et -StartFoundServices, un commutateur pour d\u00e9marrer les services non ex\u00e9cut\u00e9s qui r\u00e9pondent aux crit\u00e8res.<\/li>\n<li><strong> V\u00e9rification du temps de fonctionnement :<\/strong> Avant de poursuivre, le script v\u00e9rifie le <a href=\"https:\/\/www.ninjaone.com\/it-hub\/it-service-management\/what-is-uptime-downtime\/\" target=\"_blank\" rel=\"noopener\">temps de fonctionnement<\/a> du syst\u00e8me pour s&rsquo;assurer qu&rsquo;il fonctionne depuis au moins 15 minutes. Cela permet d&rsquo;\u00e9viter les probl\u00e8mes li\u00e9s \u00e0 des services qui n&rsquo;auraient pas eu le temps de d\u00e9marrer correctement apr\u00e8s un red\u00e9marrage.<\/li>\n<li><strong> Contr\u00f4le des privil\u00e8ges :<\/strong> Le script s&rsquo;assure qu&rsquo;il est ex\u00e9cut\u00e9 avec des privil\u00e8ges d&rsquo;administrateur, car l&rsquo;arr\u00eat et le d\u00e9marrage des services n\u00e9cessitent des autorisations \u00e9lev\u00e9es.<\/li>\n<li><strong> Validation du service :<\/strong> Les services \u00e0 ignorer sont valid\u00e9s pour s&rsquo;assurer qu&rsquo;ils ne contiennent pas de caract\u00e8res non valides et que leur nom n&rsquo;est pas excessivement long.<\/li>\n<li><strong> Identifier les services qui ne fonctionnent pas :<\/strong> Le script recueille une liste de services d\u00e9finis pour d\u00e9marrer automatiquement mais qui ne sont pas en cours d&rsquo;ex\u00e9cution. Il filtre ensuite les services dont le d\u00e9marrage est retard\u00e9 ou qui pr\u00e9sentent des conditions de d\u00e9clenchement.<\/li>\n<li><strong> Rapports et actions :<\/strong> Si des services non ex\u00e9cut\u00e9s sont trouv\u00e9s, le script les signale. Si l&rsquo;option -StartFoundServices est activ\u00e9e, il tente de d\u00e9marrer chacun de ces services, en consignant les succ\u00e8s et les erreurs.<\/li>\n<\/ol>\n<h2>Cas d&rsquo;utilisation potentiels<\/h2>\n<h3>\u00c9tude de cas\u00a0:<\/h3>\n<p>Imaginez un professionnel de l&rsquo;informatique qui g\u00e8re un r\u00e9seau de serveurs Windows h\u00e9bergeant diverses applications critiques. Un jour, les utilisateurs commencent \u00e0 signaler des probl\u00e8mes d&rsquo;acc\u00e8s \u00e0 une application cl\u00e9. Le professionnel de l&rsquo;informatique ex\u00e9cute ce script PowerShell, qui identifie que le service de l&rsquo;application, configur\u00e9 pour d\u00e9marrer automatiquement, n&rsquo;est pas en cours d&rsquo;ex\u00e9cution. Le script tente de red\u00e9marrer le service, ce qui permet de r\u00e9soudre rapidement le probl\u00e8me et de r\u00e9tablir des op\u00e9rations normales.<\/p>\n<h2>Comparaisons<\/h2>\n<p>Ce script fournit une approche rationalis\u00e9e et automatis\u00e9e par rapport \u00e0 la v\u00e9rification manuelle de chaque service via le snap-in Services MMC ou \u00e0 l&rsquo;aide d&rsquo;autres scripts moins cibl\u00e9s. D&rsquo;autres m\u00e9thodes, comme l&rsquo;utilisation du planificateur de t\u00e2ches pour surveiller les services, peuvent \u00eatre plus complexes et plus difficiles \u00e0 maintenir.<\/p>\n<h2>FAQ<\/h2>\n<h3>Q\u00a0: Ce script peut-il \u00eatre utilis\u00e9 sur d&rsquo;anciennes versions de Windows ?<\/h3>\n<p>R\u00a0: Le script est con\u00e7u pour Windows 10 et Windows Server 2016 et les versions plus r\u00e9centes. La compatibilit\u00e9 avec les versions ant\u00e9rieures peut n\u00e9cessiter des ajustements.<\/p>\n<h3>Q\u00a0: Que se passe-t-il si un service ne d\u00e9marre pas ?<\/h3>\n<p>R\u00a0: Le script tente de d\u00e9marrer chaque service jusqu&rsquo;\u00e0 trois fois et enregistre les erreurs en cas d&rsquo;\u00e9chec.<\/p>\n<h3>Q\u00a0: Puis-je exclure plusieurs services de la v\u00e9rification ?<\/h3>\n<p>R\u00a0: Oui, utilisez le param\u00e8tre -IgnoreServices avec une liste de noms de services s\u00e9par\u00e9s par des virgules.<\/p>\n<h2>Implications<\/h2>\n<p>L&rsquo;automatisation de la surveillance et de la gestion des services Windows am\u00e9liore l&rsquo; <a href=\"https:\/\/www.ninjaone.com\/fr\/efficacite\" target=\"_blank\" rel=\"noopener\">efficacit\u00e9 op\u00e9rationnelle<\/a> et r\u00e9duit la probabilit\u00e9 de temps d&rsquo;arr\u00eat. Veiller \u00e0 ce que les services essentiels fonctionnent en permanence permet d&rsquo;am\u00e9liorer la fiabilit\u00e9 et la <a href=\"https:\/\/www.ninjaone.com\/fr\/top-5-des-principes-fondamentaux-de-securite-informatique\" target=\"_blank\" rel=\"noopener\">s\u00e9curit\u00e9 du<\/a> syst\u00e8me.<\/p>\n<h2>Recommandations<\/h2>\n<ul>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"1\" data-aria-level=\"1\"><strong>Contr\u00f4le r\u00e9gulier :<\/strong> Planifiez l&rsquo;ex\u00e9cution du script \u00e0 intervalles r\u00e9guliers \u00e0 l&rsquo;aide du planificateur de t\u00e2ches pour une surveillance continue.<\/li>\n<\/ul>\n<ul>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"2\" data-aria-level=\"1\"><strong>Enregistrement :<\/strong> Impl\u00e9mentez des m\u00e9canismes de journalisation suppl\u00e9mentaires pour conserver un historique des actions effectu\u00e9es par le script.<\/li>\n<\/ul>\n<ul>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"3\" data-aria-level=\"1\"><strong>Test :<\/strong> Testez le script dans un environnement contr\u00f4l\u00e9 avant de le d\u00e9ployer dans l&rsquo;environnement de production.<\/li>\n<\/ul>\n<h2>Conclusion<\/h2>\n<p>En automatisant la gestion des services Windows, les professionnels de l&rsquo;informatique peuvent garantir une meilleure disponibilit\u00e9 et une plus grande fiabilit\u00e9 de leurs syst\u00e8mes. Pour ceux qui cherchent \u00e0 rationaliser davantage leurs op\u00e9rations informatiques, des outils tels que NinjaOne offrent des solutions compl\u00e8tes pour la surveillance, la gestion et l&rsquo;automatisation de divers aspects de l&rsquo;infrastructure informatique, compl\u00e9tant ainsi les capacit\u00e9s fournies par ce script.<\/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":[4285],"class_list":["post-353670","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\/353670","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=353670"}],"wp:attachment":[{"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/media?parent=353670"}],"wp:term":[{"taxonomy":"script_hub_category","embeddable":true,"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/operating_system?post=353670"},{"taxonomy":"use_cases","embeddable":true,"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/use_cases?post=353670"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}