Menu Fermer

Utiliser PsExec pour exécuter des commandes CMD, Powershell ou WMIC sur un ordinateur distant

PsExec est un outil portable de Microsoft qui vous permet d’exécuter des processus à distance à l’aide des informations d’identification d’un utilisateur. C’est un peu comme un programme d’accès à distance, mais au lieu de contrôler l’ordinateur avec une souris, les commandes sont envoyées via une invite de commande.

Vous pouvez utiliser PsExec pour gérer non seulement les processus sur l’ordinateur distant, mais également rediriger la sortie de la console d’une application vers votre ordinateur local, ce qui donne l’impression que le processus est en cours d’exécution localement.

Aucun logiciel n’est nécessaire sur l’ordinateur distant pour faire fonctionner le PsExec, mais il y a quelques choses à garder à l’esprit si l’outil ne fonctionne pas correctement la première fois que vous l’essayez.

Ce tutoriel vous guide pour utiliser PsExec afin d’exécuter des commandes CMD, Powershell ou WMIC sur un ordinateur à distance.

Utiliser PsExec pour exécuter des commandes CMD, Powershell ou WMIC sur un ordinateur à distance

Qu’est-ce que PsExec

PsExec est un outil portable de Microsoft qui vous permet d’exécuter des processus à distance à l’aide des informations d’identification d’un utilisateur. C’est un peu comme un programme d’accès à distance, mais au lieu de contrôler l’ordinateur avec une souris, les commandes sont envoyées via une invite de commande.

Vous pouvez utiliser PsExec pour gérer non seulement les processus sur l’ordinateur distant, mais également rediriger la sortie de la console d’une application vers votre ordinateur local, ce qui donne l’impression que le processus est en cours d’exécution localement.

Aucun logiciel n’est nécessaire sur l’ordinateur distant pour faire fonctionner l’utilitaire psexec, mais il y a quelques choses à garder à l’esprit si l’outil ne fonctionne pas correctement la première fois que vous l’essayez.

L’outil ne fonctionne que dans certaines conditions. À savoir lorsque le partage des fichiers et de l’imprimante est activé sur l’ordinateur local et distant, et lorsque la machine distante a la configuration a les partages administratifs $admin pour fournir un accès à son dossier \Windows\.
Mais surtout, il faut désactiver les restrictions UAC à distance sinon PSExec va retourner l’erreur :

Couldn't access vm-win10:
Accès refusé.

Pour cela, suivez le paragraphe Comment autoriser les partages administratifs sur Windows 10, 11 (accès refusé) de cette page :

Cela des répercussions sur la sécurité de votre PC puisque vous autorisez l’exécution à distance sur votre PC.[s/u_warning]

Comment utiliser PSExec pour exécuter des commandes CMD sur un ordinateur distant

Télécharger et installer PsExec

  • Créez le dossier C:\PSTools
  • Téléchargez PSTools depuis ce lien :
  • Puis ouvrez le fichier ZIP par exemple avec 7-zip
Télécharger et installer PsExec
  • Puis décompressez le fichier PSExec dans le dossier C:\PSTools – une version 64 bits est présente
Télécharger et installer PsExec

Vous pouvez aussi télécharger et installer PSExec en PowerShell :

Invoke-WebRequest -Uri 'https://download.sysinternals.com/files/PSTools.zip' -OutFile 'pstools.zip'
Expand-Archive -Path 'pstools.zip' -DestinationPath "$env:TEMP\pstools"
Move-Item -Path "$env:TEMP\pstools\psexec.exe" .
Remove-Item -Path "$env:TEMP\pstools" -Recurse

Comprendre la syntaxe de PSExec

Voici la syntaxe de la commande PSExec :

psexec \\NomPCDistance [-u nomUtilisateur[-p motdepasse]] commande [arguments]

Il faut spécifier donc un compte utilisateur sur le PC distant, ce dernier doit être administrateur.
Si vous ne spécifiez pas l’option -p, psexec vous demandera de saisir le mot de passe de l’utilisateur.

Dans un domaine Windows, vous pouvez utiliser PSExec de cette manière :

psexec -s \\%machine% -u domainadmin commande [arguments]
PARAMETREEXPLICATIONS
-aProcesseurs séparés sur lesquels l’application peut s’exécuter, avec des virgules, où 1 est le processeur numéroté le plus bas. Par exemple, pour exécuter l’application sur CPU 2 et CPU 4, vous entreriez: -a 2,4
-cCopier l’exécutable spécifié dans le système distant pour l’exécution. S’il est omis, l’application doit être dans le chemin du système sur le système distant.
-dN’attendez pas que le processus se termine (non interactif).
-eNe charge pas le profil du compte spécifié.
-fCopier le programme spécifié même si le fichier existe déjà sur le système distant.
-iExécutez le programme afin qu’il interagit avec le bureau de la session spécifiée sur le système distant. Si aucune session n’est spécifiée, le processus s’exécute dans la session de console.
-hSi le système cible est Windows Vista ou supérieur, exécutez le processus avec le jeton surélevé du compte, si disponible.
-lExécutez le processus en tant qu’utilisateur limité (dépouille le groupe des administrateurs et n’autorise que les privilèges attribués au groupe d’utilisateurs). Dans Windows Vista, le processus fonctionne avec une faible intégrité.
-nSpécifie le délai d’attente (en secondes) Connexion aux ordinateurs distants.
-pSpécifie le mot de passe facultatif pour le nom d’utilisateur. Si vous êtes omis, vous serez invité à saisir un mot de passe caché.
-rSpécifie le nom du service distant pour créer ou interagir.
-sExécute le processus distant dans le compte système.
-uSpécifie le nom d’utilisateur facultatif pour la connexion à l’ordinateur distant.
-vCopie le fichier spécifié uniquement s’il a un numéro de version plus élevé ou est plus récent que celui du système distant.
-wDéfinit le répertoire de travail du processus (par rapport à l’ordinateur distant).
-xAffiche l’interface utilisateur sur le bureau sécurisé WinLogon (système local uniquement).
prioritySpécifie -Low, -BelowNormal, -Ovenormal, -High ou -realtime pour exécuter le processus à une priorité différente. Utilisez -Background pour fonctionner à basse mémoire et priorité d’E / S sur Windows Vista.
computerPSEXEC ordonne à l’exécution de l’application sur le ou les ordinateurs distants spécifiés. S’il est omis, PsexEC exécute l’application sur le système local, et si un wildcard (\\ *) est spécifié, PsexEC exécute la commande sur tous les ordinateurs du domaine actuel.
@filePsexec exécutera la commande sur chacun des ordinateurs répertoriés dans le fichier.
cmdNom de l’application à exécuter.
argumentsArguments à passer (notez que les chemins de fichier doivent être des chemins absolus sur le système cible).
Les options de la commande PSExec

Si vous rencontrez cette erreur, ajoutez l’option -i pour pouvoir ouvrir une session en interactif :

PsExec could not start cmd.exe on vm-win10: Echec d'ouverture de session: l'utilisateur ne bénéficie pas du type d'ouverture de session demandé sur cet ordinateur.

Lorsque la commande réussi, PSExec indique le code erreur 0.

ipconfig exited on vm-win10 with error code 0.

Utiliser PSexec pour exécuter ipconfig à distance

Par exemple, pour vider le cache DNS à l’aide de la commande ipconfig sur un PC distant :

cd \PSTools
psexec \\vm-win10 ipconfig /flushdns
Utiliser PSexec pour exécuter ipconfig à distance

Démarrer un service à distance avec PsExec

Pour redémarrer un service sur un PC distant avec la commande ne start spooler.
Ici j’utilise l’utilisateur administrateur Mak présent sur le PC distant dont le mot de passe est a :

psexec \\vm-win10 -u mak -p a -i net start spooler
Démarrer un service à distance avec PsExec

Ouvrir l’éditeur du registre (regedit) à distance

Utilisez l’option -i pour ouvrir une session interaction afin que la fenêtre graphique de l’application s’exécute sur le PC distant :

psexec \\vm-win10 -i -s C:\Windows\regedit.exe

Si l’option -i est omise de la commande ci-dessus, il s’exécuterait en mode caché c’est à dire sans ouvrir de boîte de dialogues.

Par exemple, pour importer un fichier REG :

PsExec.exe -s \\%machine% -u domainadmin C:\windows\system32\cmd.exe /C c:\windows\system32\reg.exe IMPORT c:\temp\fix.reg

Arrêter un PC à distance avec PsExec

On peut aussi exécuter la commande shutdown sur un PC à distance afin de le redémarrer ou de l’arrête.
Voici un exemple d’utilisation de PSExec :

psexec \\vm-win10 "cmd.exe" "/c shutdown /f /r /t 60"
Arrêter un PC à distance avec PsExec

Voir aussi ce tutoriel :

Installer une application sur un PC à distance

Vous pouvez installer une application sur un ordinateur distant avec un setup se trouvant sur votre PC.

psexec \\vm-win10 -c "%USERPROFILE%\Downloads\ccsetup592.exe" cmd /S

PSExec copie le setup sur le PC distant.

Installer une application sur un PC à distance avec PSExec

Puis le setup s’exécute en mode silencieux, c’est à dire que l’installeur n’ouvre aucune fenêtre.

Installer une application sur un PC à distance avec PSExec

Dans le cas d’un fichier MSI, utilisez la syntaxe suivante :

psexec.exe \\vm-win10 -c setup.msi –i –s "msiexec.exe /i setup.msi"

Ouvrir une invite de commandes CMD à distance

Si vous avez besoin d’exécuter plusieurs commandes, vous pouvez ouvrir une invite de commandes directement sur le PC distant comme ceci :

psexec.exe \\vm-win10 -u utilisateur -p motdepasse cmd.exe

Cela lancera une fenêtre d’invite de commande régulière dans la fenêtre existante et vous permettra d’entrer chaque commande comme si vous étiez assis devant l’ordinateur distant. Par exemple, vous pouvez ensuite entrer ipconfig pour obtenir ces résultats de l’autre ordinateur, ou MKDIR pour créer un nouveau dossier, DIR pour répertorier le contenu du dossier, etc.

Ouvrir une invite de commandes CMD à distance

Comment copier un fichier sur un PC distant avec PSExec

À l’aide du commutateur -c, PSExec copiera tout fichier sur l’ordinateur distant avant l’exécution.
Par exemple :

psexec \\vm-win10 -s -d -c votre_script.cmd

Lorsque vous utilisez le commutateur -c et ne spécifiez pas de fichier exécutable, PSExec copiera toujours le fichier, mais vous recevrez une erreur indiquant que le système ne peut pas trouver le fichier spécifié. Cela se produit parce que Psexec tentera toujours d’exécuter le fichier que vous copiez.

Mas si vous avez besoin de copier des fichiers sur des ordinateurs distants avant d’utiliser PSExec, utilisez plutôt le cmdlet PowerShell Copy-Item.

Comment utiliser PsExec pour exécuter les processus comme compte système local

Pour ouvrir une invite de commandes en AUTORITE/NT sur un ordinateur distant :

psexec \\vm-win10 -i -s cmd
Comment utiliser PsExec pour exécuter les processus comme compte système local

Comment utiliser PsExec pour exécuter des commandes PowerShell sur un ordinateur à distance

Vous pouvez utiliser PsExec même pour exécuter à distance les commandes PowerShell. Par exemple, la commande suivante vous renverra la taille du répertoire C: \PSTools sur l’ordinateur distant:

psexec \\vm-win10 -u mak -p a powershell -ExecutionPolicy RemoteSigned -command "'{0:N2}' -f ((gci C:\PSTools | measure Length -Sum).Sum/1MB)"

Comment utiliser PsExec pour exécuter des commandes sur plusieurs ordinateurs à distance

Psexec vous permet d’exécuter la commande simultanément sur plusieurs ordinateurs distants.
Pour ce faire, vous pouvez définir les noms d’ordinateur séparés par des virgules :

psexec PC1,PC2 "ipconfig /all"

Une autre façon est d’enregistrer la liste dans un fichier texte, puis spécifier un chemin vers ce fichier :

psexec @c:\PsTools\liste_ordinateur.txt ipconfig.

Si au lieu du nom de l’ordinateur, vous utilisez un astérisque (psexec *), la commande sera exécutée sur tous les ordinateurs de votre domaine Windows.

Par exemple, la commande suivante copiera votre fichier run.bat sur tous les ordinateurs répertoriés dans le fichier texte C:\PsTools\liste_ordinateur.txt, et exécuter ce lot (l’argument –h est utilisé pour exécuter le lot élevé ):

PsExec.exe @c:\PsTools\liste_ordinateur.txt -h -u administrateur -p motdepasse -c "c:\PsTools\run.bat"

Les messages d’erreur de PSExec

CODE ERREUREXPLICATION
-2146232576Généralement renvoyé par Windows Update lorsqu’une erreur se produit.
0La commande a été exécutée avec succès.
1Fonction incorrecte. Un problème s’est produit.
1603Erreur fatale lors de l’installation. Ceci est généralement renvoyé par msiexec.
2Le système ne peut pas trouver le fichier spécifié.
4Le système ne peut pas ouvrir le fichier.
5L’accès est refusé.
6L’handle est invalide.
6118La liste des serveurs de ce groupe de travail n’est pas actuellement disponible.
Les codes erreurs de PSExec