Comment tuer un processus Windows sur un système distant

Peut-être que vous travaillez joyeusement sur un serveur Windows distant, puis vous trouvez un processus qui tourne mal et utilise des cycles CPU précieux. Que faites-vous ? Tuez-le !

Dans ce tutoriel, vous apprendrez comment tuer un processus Windows en utilisant des utilitaires natifs, des utilitaires tiers et PowerShell. Vous apprendrez d’abord comment examiner les processus en cours d’exécution dans Windows, puis comment les arrêter.

Prérequis

Si vous souhaitez suivre les étapes de ce tutoriel, assurez-vous d’avoir les éléments suivants à portée de main:

  • A Windows PC – All demos in this tutorial will use Windows 10, but Windows 7+ will work also.
  • A Windows Server or another Windows desktop to use as your target for killing the remote tasks. This tutorial uses a standalone Windows Server 2016 as the remote server.
  • La Sysinternals Suite de Microsoft.
  • Windows PowerShell 5 ou ultérieur. Ce tutoriel utilise PowerShell v7.1.3

Interrogation d’un processus Windows distant avec Tasklist

Depuis Windows XP, il existe un outil pratique appelé tasklist. Tasklist est un outil pratique qui interroge les processus sur des ordinateurs distants. Avant de pouvoir tuer un processus, vous devez d’abord les découvrir!

Ouvrez une session PowerShell ou une invite de commande sur votre bureau et tapez la commande suivante pour afficher tous les processus en cours d’exécution sur votre ordinateur distant.

La commande ci-dessous interroge un ordinateur distant (/S) en authentifiant la connexion avec le nom d’utilisateur administrateur (/U) et le mot de passe (/P).

tasklist /S WIN-BANGJIEFNOC.local.net /U administrator /P password

Vous remarquerez ci-dessous que le Nom de la session n’apparaît pas. Étant donné que vous exécutez tasklist sur un ordinateur distant, tasklist ne fournit pas le Nom de la session.

list of processes on a remote server

Peut-être préférez-vous simplement répertorier un seul processus. Pas de problème. Pour cela, spécifiez le paramètre /FI. Le paramètre /FI accepte une requête qui est transmise à tasklist pour filtrer des processus spécifiques.

tasklist /S WIN-BANGJIEFNOC.local.net /fi "imagename eq notepad.exe" /U administrator /P 'password'
The output of tasklist showing a specific process

Interrogation du processus Windows distant avec PSList

Un autre outil pour afficher les processus en cours d’exécution est PSList, et cet utilitaire fait partie de la Suite Sysinternals. Cette suite d’outils existe depuis de nombreuses années et a été créée par Mark Russinovich, CTO d’Azure!

Commençons par voir comment vous pouvez afficher les processus en cours d’exécution sur un ordinateur distant.

1. Ouvrez une session PowerShell ou une invite de commande sur votre bureau et changez le répertoire vers l’endroit où vous avez extrait la Suite Sysinternal.

2. Dans votre session PowerShell, exécutez la commande suivante pour afficher les processus en cours d’exécution sur l’ordinateur distant et l’utilisation du processeur associée en temps réel.

La commande ci-dessous exécute pslist pour interroger tous les processus Windows distants sur l’ordinateur WIN-BANGJIEFNOC en s’authentifiant avec le nom d’utilisateur Administrateur (-u) et le mot de passe (-p).

La commande utilise l’option -s pour basculer pslist en mode « gestionnaire de tâches » qui met à jour la liste de manière répétée.

Si c’est la première fois que vous utilisez un outil Sysinternals, une bannière peut apparaître vous demandant d’accepter le EULA; cliquez sur OK.

.\pslist \\WIN-BANGJIEFNOC.local.net -u Administrator -p 'password' -s

Vous voyez maintenant la sortie suivante de l’exécution de cette commande ; pour cet article, vous êtes intéressé par 3 de ces valeurs. Comme indiqué ci-dessous.

  • Nom: Le nom du processus.
  • Pid: Identifiant du processus, une valeur critique utilisée dans ce tutoriel, le numéro de PID peut être utilisé pour arrêter un processus distant. C’est l’identifiant numérique attribué à un processus.
  • CPU: Cela montre en temps quasi réel l’utilisation de votre CPU disponible dans son ensemble.

Les autres valeurs sont liées à la mémoire et dépassent le cadre de cet article.

Output in real-time of pslist

3. Étant donné que l’étape deux utilise l’option -s, appuyez sur Ctrl-C pour quitter pslist et revenir à la console.

Restreignez la liste des processus retournés en utilisant l’option -e suivie du nom du processus, par exemple, -e Winlogon.

Tuer les processus par nom de processus avec PSKill

Une fois que vous savez comment trouver des processus distants, plongeons maintenant dans la façon de les tuer. Pour commencer, couvrons l’utilitaire pskill . Apprenez d’abord à tuer les processus par nom de processus.

1. Assurez-vous d’avoir un processus que vous pouvez tuer sur votre serveur distant. Ce tutoriel utilisera le processus du bloc-notes.

2. Ouvrez une session PowerShell ou une invite de commande sur votre bureau local et changez le répertoire vers l’endroit où vous avez extrait le Sysinternal Suite, puis exécutez la commande suivante. Vous pouvez voir que la syntaxe de pskill est similaire à celle de pslist.

.\pskill.Exe \\WIN-BANGJIEFNOC.local.net -u administrator -p 'password' -e notepad.exe
Output of pskill

3. Maintenant, exécutez pslist, comme expliqué dans la section précédente, pour confirmer que le processus est effectivement arrêté.

.\pslist \\WIN-BANGJIEFNOC.local.net -u Administrator -p 'password' -e notepad.exe
Output of pslist

Tuer les processus par ID de processus avec PSKill

Tuer le processus par nom peut être suffisant pour vos besoins si une seule instance de ce processus est en cours d’exécution ou si vous voulez tuer tous les processus avec ce nom. Et si vous souhaitez tuer une instance particulière d’un processus en cours d’exécution? Les étapes suivantes démontreront cela.

1. Sur votre serveur distant, ouvrez le Bloc-notes deux fois ; vous tuerez l’un de ces processus dans cette démonstration ; vous pouvez bien sûr, substituer d’autres processus.

2. Exécutez la commande suivante en prenant note de l’un des Pid comme indiqué ci-dessous ; vous en aurez besoin pour l’étape suivante.

.\pslist \\WIN-BANGJIEFNOC.local.net -u Administrator -p password -e notepad
Using pslist to list PID’s of Notepad

3. En utilisant le PID, exécutez maintenant pskill, en fournissant le PID comme dernier argument.

.\pskill.Exe \\WIN-BANGJIEFNOC.local.net -u administrator -p password 1984
The output of pskill for a particular PID

4. Enfin, vérifiez que vous avez toujours une instance de Notepad en cours d’exécution en relançant pslist. Vous ne devriez maintenant voir qu’une seule instance de Notepad en cours d’exécution.

Output of pslist

Arrêt des processus Windows à distance avec TaskKill par nom

Le taskkill utilitaire est natif à Windows et comprend d’autres options en ligne de commande pour redémarrer les processus par nom d’utilisateur et nom d’application. Commençons et tuons à nouveau Notepad!

Tuer le processus par nom

1. Sur votre serveur distant, ouvrez Notepad; Notepad est le processus que vous tuerez dans cette démonstration; vous pouvez bien sûr substituer un autre processus.

2. Ouvrez une session PowerShell ou une invite de commande sur votre bureau. En tapant la commande suivante, vous tuerez notepad.exe

taskkill /S WIN-BANGJIEFNOC.local.net /you administrator /p password /IM notepad.exe

La sortie est affichée ci-dessous:

/IM est le paramètre pour Image; dans ce cas, c’est notepad.exe

The output of taskkill command

3. Pour confirmer que le processus est arrêté, exécutez tasklist. Vous ne devriez maintenant voir aucune tâche correspondant à ce filtre.

tasklist /S WIN-BANGJIEFNOC.local.net /fi "imagename eq notepad.exe" /U administrator /P 'password'
Output of tasklist using imagename

Arrêt des processus Windows à distance avec TaskKill par PID

Tuer un processus avec taskkill en utilisant un PID n’est pas très différent de l’utilisation du nom du processus. Mais, comme vous ne pouvez pas utiliser le nom, vous devrez d’abord trouver le PID et le passer à taskkill.

En supposant que Notepad est en cours d’exécution sur votre hôte Windows distant:

1. Exécutez tasklist comme indiqué ci-dessous pour trouver le PID du processus Notepad. Notez l’un des PID comme indiqué ci-dessous ; vous en aurez besoin pour l’étape suivante.

tasklist /S WIN-BANGJIEFNOC.local.net /fi "imagename eq notepad.exe" /U administrator /P 'password'
the output of tasklist to view PIDS

2. Maintenant, exécutez taskkill en fournissant le PID en tant que dernier argument.

taskkill /S WIN-BANGJIEFNOC.local.net /u administrator /p 'password' /PID 3776
The output of taskkill specifying a particular PID

3. Enfin, exécutez tasklist pour confirmer que le processus est arrêté.

Output of tasklist

Arrêt d’un processus Windows à distance avec PowerShell

PowerShell vous offre quelques options pour tuer des processus à distance ; le premier cmdlet Stop-Process ne peut pas tuer nativement un processus à distance, car il n’a pas d’option pour spécifier un nom d’ordinateur. Mais, vous pouvez contourner ce problème en exécutant Stop-Process à distance via PowerShell Remoting.

1. Si votre hôte et votre serveur distant ne sont pas dans un domaine Active Directory, fournissez d’abord un nom d’utilisateur et un mot de passe, en créant un objet PSCredential.

$credentials = Get-Credential
Setting up credentials

2. Ensuite, puisque le tutoriel utilisera SSL pour se connecter à l’ordinateur distant et utilisera un certificat auto-signé, créez une option PSSessionOption qui ignorera la vérification du certificat pour une autorité de certification de confiance.

$PSSessionOption = New-PSSessionOption -SkipCACheck

3. Maintenant, connectez-vous au serveur avec la commande Enter-PSSession, qui établit une session interactive sur le serveur distant.

La commande ci-dessous se connecte à l’ordinateur WIN-BANGJIEFNOC.local.net en utilisant le nom d’utilisateur et le mot de passe fournis ci-dessus (Credential), en sautant la vérification de l’autorité de certification (SessionOption), et en se connectant via SSL (UseSSL).

Enter-PSSession -ComputerName WIN-BANGJIEFNOC.local.net -Credential $credentials -SessionOption $PSSessionOption -UseSSL
Using Enter-PsSession for an interactive session

4. Une fois connecté à l’hôte distant, vérifiez le processus que vous souhaitez arrêter en exécutant Get-Process. Dans ce cas, vous verrez le processus notepad.

Get-Process -ProcessName Notepad
Output of Get-Process

5. Pour arrêter ce processus, exécutez Stop-Process, comme indiqué ci-dessous.

Stop-Process -ProcessName Notepad

6. Enfin, confirmez que vous avez arrêté le processus en réexécutant Get-Process, et vous devriez recevoir un message d’erreur.

Checking for Notepad as a running process

Si vous souhaitez arrêter un processus Windows distant de manière non interactive, utilisez la commande Invoke-Command en utilisant les paramètres suivants : Invoke-Command -ComputerName WIN-BANGJIEFNOC.local.net -Credential $credentials -ScriptBlock {Stop-Process -ProcessName notepad} -UseSSL. Encapsuler la commande Stop-Process dans le paramètre ScriptBlock envoie la commande à l’hôte distant.

Conclusion

Vous avez appris différentes méthodes pour tuer des processus à distance et comment surmonter les situations où les règles du pare-feu réseau pourraient empêcher les utilitaires de fonctionner correctement ; ce tutoriel aurait également pu vous aider à résoudre des problèmes sur Windows.

Les utilitaires dont vous avez appris l’existence sont des outils puissants ; utilisez-les avec précaution !

Source:
https://adamtheautomator.com/how-to-kill-a-windows-process/