{"id":353637,"date":"2024-08-02T09:39:43","date_gmt":"2024-08-02T09:39:43","guid":{"rendered":"https:\/\/www.ninjaone.com\/script-hub\/redemarrer-le-service-teamviewer-powershell\/"},"modified":"2024-10-13T19:06:02","modified_gmt":"2024-10-13T19:06:02","slug":"redemarrer-le-service-teamviewer-powershell","status":"publish","type":"script_hub","link":"https:\/\/www.ninjaone.com\/fr\/script-hub\/redemarrer-le-service-teamviewer-powershell\/","title":{"rendered":"Comment g\u00e9rer et red\u00e9marrer le service TeamViewer avec PowerShell"},"content":{"rendered":"<p>En mati\u00e8re de gestion informatique, il est essentiel d&rsquo;assurer la continuit\u00e9 et la fonctionnalit\u00e9 des services essentiels. TeamViewer, un outil d&rsquo;assistance \u00e0 distance tr\u00e8s utilis\u00e9, doit souvent \u00eatre op\u00e9rationnel \u00e0 tout moment. Cependant, les services peuvent parfois \u00eatre interrompus, ce qui n\u00e9cessite d&rsquo;agir rapidement pour les r\u00e9tablir. Cet article pr\u00e9sente un script PowerShell con\u00e7u <strong>pour red\u00e9marrer et g\u00e9rer le service TeamViewer<\/strong>, afin de garantir un temps d&rsquo;arr\u00eat minimal et une productivit\u00e9 maximale.<\/p>\n<h2>Contexte<\/h2>\n<p>Les scripts PowerShell sont des outils inestimables 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>. Ils automatisent les t\u00e2ches de routine, renforcent la consistance et <a href=\"https:\/\/www.ninjaone.com\/fr\/blog\/le-lien-entre-lerreur-humaine-et-les-risques-de-cybersecurite\/\" target=\"_blank\" rel=\"noopener\">r\u00e9duisent le risque d&rsquo;erreurs humaines<\/a>. Le script dont nous parlons aujourd&rsquo;hui concerne le service TeamViewer.<\/p>\n<p>Compte tenu de son r\u00f4le dans l&rsquo;assistance \u00e0 distance, tout <a href=\"https:\/\/www.ninjaone.com\/it-hub\/it-service-management\/what-is-network-downtime\/\" target=\"_blank\" rel=\"noopener\">temps d&rsquo;arr\u00eat<\/a> peut avoir un impact significatif sur la prestation de services. Ce script ne se contente pas de red\u00e9marrer le service TeamViewer, il inclut \u00e9galement des m\u00e9canismes permettant de le r\u00e9activer s&rsquo;il a \u00e9t\u00e9 d\u00e9sactiv\u00e9, ce qui en fait un outil polyvalent dans l&rsquo;arsenal d&rsquo;un professionnel de l&rsquo;informatique.<\/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    Restarts the TeamViewer Service. Use \"Set to Automatic\" if the service was disabled.\r\n.DESCRIPTION\r\n    Restarts the TeamViewer Service. Use \"Set to Automatic\" if the service was disabled.\r\n.EXAMPLE\r\n    (No Parameters)\r\n    \r\n    Status   Name               DisplayName                           \r\n    ------   ----               -----------                           \r\n    Running  TeamViewer         TeamViewer                            \r\n    Attempt 1 has completed!\r\n    TeamViewer has restarted successfully!\r\n\r\nPARAMETER: -Enable\r\n    Re-Enables disabled TeamViewer services.\r\n\r\nPARAMETER: -Attempts \"7\" \r\n    Overrides the number of attempts the script will make to restart the service. Simply replace 7 with your desired number of attempts.\r\n\r\nPARAMETER: -WaitTimeInSecs \"30\"\r\n    Overrides the amount of time in between attempts. Defaults to 15.\r\n\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    [Switch]$Enable = [System.Convert]::ToBoolean($env:setToAutomatic),\r\n    [Parameter()]\r\n    [int]$Attempts = 3,\r\n    [Parameter()]\r\n    [int]$WaitTimeInSecs = 15\r\n)\r\n\r\nbegin {\r\n    if ($env:attempts -and $env:attempts -notlike \"null\") { $Attempts = $env:attempts }\r\n    if ($env:waitTimeInSeconds -and $env:waitTimeInSeconds -notlike \"null\") { $WaitTimeInSecs = $env:waitTimeInSeconds }\r\n\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    # Grabs initial set of services to try once.\r\n    $ServiceList = Get-CimInstance -ClassName \"win32_service\"\r\n\r\n    # Attempts to find the TeamViewer service using its executable name.\r\n    function Find-Service {\r\n        [CmdletBinding()]\r\n        param(\r\n            [Parameter(ValueFromPipeline)]\r\n            [String]$Name\r\n        )\r\n        process {\r\n            $ServiceList | Where-Object { $_.PathName -Like \"*$Name.exe*\" } \r\n        }\r\n    }\r\n\r\n    # Tests if the service was successful\r\n    function Test-Service {\r\n        [CmdletBinding()]\r\n        param(\r\n            [Parameter(ValueFromPipeline)]\r\n            [String]$Name\r\n        )\r\n        process {\r\n            $Running = Get-Service $Name | Where-Object { $_.Status -eq $Running }\r\n            if ($Running) {\r\n                return $True\r\n            }\r\n            else {\r\n                return $False\r\n            }\r\n        }\r\n    }\r\n\r\n    # Name of each TeamViewer exe.\r\n    $ProcessName = \"TeamViewer\", \"TeamViewer_Service\", \"tv_w32\", \"tv_x64\"\r\n}\r\nprocess {\r\n    if (-not (Test-IsElevated)) {\r\n        Write-Host \"[Error] Access Denied. Please run with Administrator privileges.\"\r\n        exit 1\r\n    }\r\n\r\n    # List of services to try\r\n    $Services = $ProcessName | Find-Service\r\n\r\n    # If no TeamViewer service is found\r\n    if (-not $Services) {\r\n        Write-Host \"[Error] TeamViewer appears to be missing its service. You will need to reinstall it.\"\r\n        exit 1\r\n    }\r\n\r\n    # Loops through each service and attempts to start them\r\n    foreach ($Service in $Services) {\r\n        $Failed = $True\r\n        $Attempt = 1\r\n        While ($Attempt -le $Attempts -and $Failed -eq $True) {\r\n\r\n            # If the service was disabled, check if -Enable was specified.\r\n            if ($Service.StartMode -ne \"Auto\" -and $Enable) {\r\n                # If so re-enable it.\r\n                $Service | Get-Service | Set-Service -StartupType \"Automatic\"\r\n            }\r\n            elseif ($Service.StartMode -ne \"Auto\") {\r\n                Write-Host \"[Error] The service is not set to start automatically. Use 'Set To Automatic' to change the startup type to automatic.\"\r\n                if($Service.StartMode -eq \"Disabled\"){ exit 1 }\r\n            }\r\n\r\n            # All possible service states\r\n            Switch ($Service.State) {\r\n                \"Running\" { $Service | Get-Service | Restart-Service -PassThru }\r\n                \"Paused\" { $Service | Get-Service | Resume-Service -PassThru }\r\n                \"Pending\" {\r\n                    $Service | Get-Service | Stop-Service\r\n                    Start-Sleep -Seconds 2  # Ensure the service has time to stop\r\n                    $Service | Get-Service | Start-Service -PassThru\r\n                }\r\n                \"Stopped\" { $Service | Get-Service | Start-Service -PassThru }\r\n            }\r\n\r\n            Start-Sleep -Seconds $WaitTimeInSecs\r\n\r\n            # Feedback on the number of attempts made. Multiple attempts may indicate that TeamViewer needs to be reinstalled.\r\n            Write-Host \"Attempt $Attempt completed.\"\r\n\r\n            $Attempt++\r\n            $Failed = $Service.Name | Test-Service\r\n        }\r\n    }\r\n    $Failed = $Services | Get-Service | Where-Object { $_.Status -ne \"Running\" }\r\n\r\n    if ($Failed) {\r\n        Write-Host \"[Error] Unable to start the service!\"\r\n        exit 1\r\n    }\r\n    else {\r\n        Write-Host \"TeamViewer has restarted successfully!\"\r\n        exit 0\r\n    }\r\n}\r\nend {\r\n    \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>La fonction principale du script est de red\u00e9marrer le service TeamViewer, avec des fonctionnalit\u00e9s suppl\u00e9mentaires pour configurer le service afin qu&rsquo;il d\u00e9marre automatiquement s&rsquo;il est d\u00e9sactiv\u00e9 et pour personnaliser le nombre de tentatives de red\u00e9marrage et les p\u00e9riodes d&rsquo;attente entre les tentatives.<\/p>\n<h3>Composants cl\u00e9s<\/h3>\n<h4>\u00a01. Param\u00e8tres et initialisation<\/h4>\n<p>Le script commence par d\u00e9finir les param\u00e8tres suivants : $Enable, $Attempts et $WaitTimeInSecs. Ces param\u00e8tres permettent de personnaliser le script et de l&rsquo;adapter \u00e0 diff\u00e9rents sc\u00e9narios.<\/p>\n<h4>2. Contr\u00f4le de l&rsquo;\u00e9l\u00e9vation<\/h4>\n<p>Le script comprend une fonction permettant de v\u00e9rifier s&rsquo;il est ex\u00e9cut\u00e9 avec des droits d&rsquo;administrateur, ce qui est n\u00e9cessaire pour les t\u00e2ches de gestion des services.<\/p>\n<h4>3. D\u00e9couverte des services<\/h4>\n<p>Il r\u00e9cup\u00e8re une liste de tous les services et les filtre pour trouver ceux qui sont li\u00e9s \u00e0 TeamViewer.<\/p>\n<h4>4. Contr\u00f4le de l&rsquo;\u00e9tat des services<\/h4>\n<p>Une autre fonction v\u00e9rifie si le service sp\u00e9cifi\u00e9 est en cours d&rsquo;ex\u00e9cution.<\/p>\n<h4>5. Boucle de gestion des services<\/h4>\n<p>La boucle tente de red\u00e9marrer le service TeamViewer jusqu&rsquo;au nombre de tentatives sp\u00e9cifi\u00e9, en faisant une pause entre les tentatives.<\/p>\n<h2>Cas d&rsquo;utilisation potentiels<\/h2>\n<p>Consid\u00e9rons un sc\u00e9nario d&rsquo;assistance informatique dans lequel les services TeamViewer sur une machine distante s&rsquo;arr\u00eatent de mani\u00e8re inattendue. Un professionnel de l&rsquo;informatique peut utiliser ce script pour red\u00e9marrer le service \u00e0 distance, garantissant ainsi une interruption minimale des op\u00e9rations de support. Par exemple, lors d&rsquo;une session d&rsquo;assistance critique, si le service s&rsquo;arr\u00eate, le script peut \u00eatre ex\u00e9cut\u00e9 pour le remettre en ligne sans n\u00e9cessiter d&rsquo;intervention manuelle.<\/p>\n<h2>Comparaisons<\/h2>\n<p>Ce script offre une approche simplifi\u00e9e par rapport aux red\u00e9marrages manuels ou \u00e0 l&rsquo;utilisation d&rsquo;autres outils tels que Windows Service Manager. Tandis que cette derni\u00e8re m\u00e9thode n\u00e9cessite des v\u00e9rifications manuelles et des red\u00e9marrages, ce script automatise le processus, garantissant ainsi des r\u00e9solutions coh\u00e9rentes et rapides.<\/p>\n<h2>FAQ<\/h2>\n<h3>Q\u00a0: Que se passe-t-il si le service est d\u00e9sactiv\u00e9 ?<\/h3>\n<p>R\u00a0: Le script peut r\u00e9activer le service si le param\u00e8tre -Enable est utilis\u00e9.<\/p>\n<h3>Q\u00a0: Puis-je ajuster le nombre de tentatives de red\u00e9marrage ?<\/h3>\n<p>R\u00a0: Oui, utilisez le param\u00e8tre -Attempts pour sp\u00e9cifier le nombre de tentatives souhait\u00e9.<\/p>\n<h3>Q\u00a0: Que se passe-t-il si le script n&rsquo;est pas ex\u00e9cut\u00e9 avec des privil\u00e8ges d&rsquo;administrateur ?<\/h3>\n<p>R\u00a0: Le script v\u00e9rifie l&rsquo;\u00e9l\u00e9vation et se termine par un message d&rsquo;erreur s&rsquo;il n&rsquo;est pas ex\u00e9cut\u00e9 en tant qu&rsquo;administrateur.<\/p>\n<h2>Implications<\/h2>\n<p>L&rsquo;automatisation du red\u00e9marrage des services critiques tels que TeamViewer r\u00e9duit les temps d&rsquo;arr\u00eat et am\u00e9liore les temps de r\u00e9ponse. Toutefois, il est essentiel de veiller \u00e0 ce que les scripts de ce type soient utilis\u00e9s de mani\u00e8re responsable et avec les autorisations appropri\u00e9es, car ils peuvent perturber les services s&rsquo;ils sont mal configur\u00e9s.<\/p>\n<h2>Recommandations<\/h2>\n<ul>\n<li><strong>Test dans un environnement contr\u00f4l\u00e9<\/strong>: Avant de le d\u00e9ployer dans un environnement r\u00e9el, testez le script dans une configuration contr\u00f4l\u00e9e pour vous assurer qu&rsquo;il se comporte comme pr\u00e9vu.<\/li>\n<li><strong>Contr\u00f4ler l&rsquo;\u00e9tat du service<\/strong>: Utilisez des outils de surveillance pour suivre l&rsquo;\u00e9tat des services TeamViewer et d\u00e9clencher automatiquement le script si des probl\u00e8mes sont d\u00e9tect\u00e9s.<\/li>\n<li><strong>Maintenir le script \u00e0 jour<\/strong>: Veillez \u00e0 ce que le script soit mis \u00e0 jour pour tenir compte de toute modification des noms de service ou des chemins d&rsquo;acc\u00e8s aux ex\u00e9cutables.<\/li>\n<\/ul>\n<h2>Conclusion<\/h2>\n<p>L&rsquo;utilisation de scripts pour g\u00e9rer les services est une technique puissante pour les professionnels de l&rsquo;informatique. Ce script particulier de red\u00e9marrage des services TeamViewer montre comment l&rsquo;automatisation peut am\u00e9liorer l&rsquo;efficacit\u00e9 et la fiabilit\u00e9. Pour les solutions de gestion informatique, <a href=\"https:\/\/www.ninjaone.com\/fr\/\" target=\"_blank\" rel=\"noopener\">NinjaOne<\/a> fournit une plateforme de pointe qui peut int\u00e9grer de tels scripts, offrant un ensemble complet d&rsquo;outils pour g\u00e9rer efficacement l&rsquo;assistance \u00e0 distance et les op\u00e9rations informatiques.<\/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-353637","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\/353637","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=353637"}],"wp:attachment":[{"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/media?parent=353637"}],"wp:term":[{"taxonomy":"script_hub_category","embeddable":true,"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/operating_system?post=353637"},{"taxonomy":"use_cases","embeddable":true,"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/use_cases?post=353637"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}