PsTools
Silent install package for PsTools
2.54-7
System and network
System and network
Preprod packages are packages built on LUTI.
They remain in PREPROD usually for 5 days, after which a second VirusTotal scan is performed to verify that the status has not changed.
If the package passes this last check, it is promoted to PROD and published on the store.
- package: tis-sysinternals-pstools
- name: PsTools
- version: 2.54-7
- categories: System and network
- maintainer: WAPT Team,Tranquil IT,Jimmy PELÉ,Pierre COSSON,Flavien SCHELFAUT
- editor: Microsoft Corporation
- licence: https://docs.microsoft.com/sysinternals/license-terms,wapt_public
- locale: all
- target_os: windows
- impacted_process: PsExec,PsExec64,psfile,psfile64,PsGetsid,PsGetsid64,PsInfo,PsInfo64,pskill,pskill64,pslist,pslist64,PsLoggedon,PsLoggedon64,psloglist,psloglist64,pspasswd,pspasswd64,psping,psping64,PsService,PsService64,psshutdown,psshutdown64,pssuspend,pssuspend64
- architecture: all
- signature_date:
- size: 5.15 Mo
- homepage : https://learn.microsoft.com/sysinternals/downloads/pstools
- conflicts :
package : tis-sysinternals-pstools
version : 2.54-7
architecture : all
section : base
priority : optional
name : PsTools
categories : System and network
maintainer : WAPT Team,Tranquil IT,Jimmy PELÉ,Pierre COSSON,Flavien SCHELFAUT
description : PsTools is a suite of command-line utilities for listing the processes running on local or remote computers, running processes remotely, rebooting computers and more
depends :
conflicts : tis-ms-pstools
maturity : PREPROD
locale : all
target_os : windows
min_wapt_version : 2.3
sources : https://learn.microsoft.com/sysinternals/downloads/pstools
installed_size :
impacted_process : PsExec,PsExec64,psfile,psfile64,PsGetsid,PsGetsid64,PsInfo,PsInfo64,pskill,pskill64,pslist,pslist64,PsLoggedon,PsLoggedon64,psloglist,psloglist64,pspasswd,pspasswd64,psping,psping64,PsService,PsService64,psshutdown,psshutdown64,pssuspend,pssuspend64
description_fr : PsTools est une suite d'utilitaires en ligne de commande permettant de lister les processus en cours sur des ordinateurs locaux ou distants, d'exécuter des processus à distance, de redémarrer des ordinateurs et plus encore
description_pl : PsTools to zestaw narzędzi wiersza poleceń do wyświetlania procesów uruchomionych na komputerach lokalnych lub zdalnych, zdalnego uruchamiania procesów, ponownego uruchamiania komputerów i nie tylko
description_de : PsTools ist eine Sammlung von Befehlszeilenprogrammen zum Auflisten der auf lokalen oder entfernten Computern laufenden Prozesse, zum Ausführen von Prozessen aus der Ferne, zum Neustarten von Computern und mehr
description_es : PsTools es un conjunto de utilidades de línea de comandos para listar los procesos que se ejecutan en equipos locales o remotos, ejecutar procesos de forma remota, reiniciar equipos y mucho más
description_pt : O PsTools é um conjunto de utilitários de linha de comandos para listar os processos em execução em computadores locais ou remotos, executar processos remotamente, reiniciar computadores e muito mais
description_it : PsTools è una suite di utilità a riga di comando per elencare i processi in esecuzione su computer locali o remoti, eseguire processi in remoto, riavviare computer e altro ancora
description_nl : PsTools is een verzameling opdrachtregelprogramma's voor het weergeven van de processen die op lokale of externe computers draaien, het op afstand uitvoeren van processen, het herstarten van computers en meer
description_ru : PsTools представляет собой набор утилит командной строки для вывода списка процессов, запущенных на локальных или удаленных компьютерах, удаленного запуска процессов, перезагрузки компьютеров и многого другого
audit_schedule :
editor : Microsoft Corporation
keywords : pstools,sysinternals,psexec,pskill,pslist,psinfo,remote,process,command-line,administration
licence : https://docs.microsoft.com/sysinternals/license-terms,wapt_public
homepage : https://learn.microsoft.com/sysinternals/downloads/pstools
package_uuid : bbd04da6-73ed-4b3f-9aee-5fada6b18e18
valid_from :
valid_until :
forced_install_on :
changelog :
min_os_version : 6.2
max_os_version :
icon_sha256sum : db286f658156b91f0d39798bd5e7f3b776ab2fb330070894323afa6af77a8b10
signer : test
signer_fingerprint: b82fc8ef4a4475c0f69ac168176c2bfc58f572eb716c4eadd65e4785c155dd8e
signature_date : 2026-10-16T01:15:12.000000
signed_attributes : package,version,architecture,section,priority,name,categories,maintainer,description,depends,conflicts,maturity,locale,target_os,min_wapt_version,sources,installed_size,impacted_process,description_fr,description_pl,description_de,description_es,description_pt,description_it,description_nl,description_ru,audit_schedule,editor,keywords,licence,homepage,package_uuid,valid_from,valid_until,forced_install_on,changelog,min_os_version,max_os_version,icon_sha256sum,signer,signer_fingerprint,signature_date,signed_attributes
signature : nv52CIEmLdTqDjRAQJTToHuVMgSgXVmP6CVMNbBXyPQpkJN7tRkGfAO+z0Vt37/uybkKt0A8Sfvtq6m+nanYx19rOO+2p7/vueK3h/E3jgQ3vQUmzmx7rWnhkK6jjSQ8RF0cV6umY1b7VhM0zewZyZGa14mpECdxLpTjIoAvMdm2VHYncyTHvyHDoBqnYxzA1+b2RI/JwFgdnan7DO616xhIrnoBYHZUIMm4Sfz40mC+QMZ1DLf7R/GqV37aBS1UkUYGPlYCu4TtcW3IxmYUgzszkyZ+AkcPrS+FKlgeLld9hl6jxV1nkULTnZbr2qvhr+rfBH+Uy1nSh5xFdnzLZw==
# -*- coding: utf-8 -*-
from setuphelpers import *
app_name = "PSTools"
app_dir = makepath(programfiles32, app_name)
version_file = makepath(app_dir, "psversion.txt")
tools_list = [
"PsExec",
"psfile",
"PsGetsid",
"PsInfo",
"pskill",
"pslist",
"PsLoggedon",
"psloglist",
"pspasswd",
"psping",
"PsService",
"psshutdown",
"pssuspend",
]
eula_sids = [".DEFAULT", "S-1-5-18", "S-1-5-19", "S-1-5-20"]
# The suite version is only written in psversion.txt, each exe has its own version
installed_version = ""
if isfile(version_file):
with open(version_file, "r") as f:
installed_version = f.read().split(":")[-1].strip()
def install():
bin_name = glob.glob("PSTools.zip")[0]
# Uninstall older version before new one
if installed_version and Version(installed_version) < Version(control.get_software_version()):
uninstall()
# Remove the uninstall key registered by older package revisions
if installed_softwares(uninstallkey=app_name):
unregister_uninstall(app_name, win64app=False)
mkdirs(app_dir)
print(f"Extracting: {bin_name} to: {app_dir}")
unzip(bin_name, app_dir)
add_to_system_path(app_dir)
print(f"Accepting: {app_name} EULA")
for tool_name in tools_list:
for sid in eula_sids:
registry_set(HKEY_USERS, rf"{sid}\SOFTWARE\Sysinternals\{tool_name}", "EulaAccepted", 1)
def session_setup():
print(f"Accepting: {app_name} EULA")
for tool_name in tools_list:
if not reg_value_exists(HKEY_CURRENT_USER, rf"SOFTWARE\Sysinternals\{tool_name}", "EulaAccepted"):
registry_set(HKEY_CURRENT_USER, rf"SOFTWARE\Sysinternals\{tool_name}", "EulaAccepted", 1)
def audit():
audit_status = "OK"
if Version(installed_version) < Version(control.get_software_version()):
print(f"{app_name} is installed in version ({installed_version}) instead of ({control.get_software_version()})")
audit_status = "WARNING"
elif isdir(app_dir) and not dir_is_empty(app_dir):
print(f"{app_name} ({installed_version}) is installed")
audit_status = "OK"
else:
print(f"{app_name} is not installed")
audit_status = "ERROR"
return audit_status
def uninstall():
killalltasks(ensure_list(control.impacted_process))
if isdir(app_dir):
remove_tree(app_dir)
remove_from_system_path(app_dir)
print(f"Removing: {app_name} EULA consent")
for tool_name in tools_list:
for sid in eula_sids:
if reg_key_exists(HKEY_USERS, rf"{sid}\SOFTWARE\Sysinternals\{tool_name}"):
registry_deletekey(HKEY_USERS, rf"{sid}\SOFTWARE\Sysinternals", tool_name)
# -*- coding: utf-8 -*-
from setuphelpers import *
from setupdevhelpers import *
import waptlicences
def update_package():
package_updated = False
proxies = get_proxies()
if not proxies:
proxies = get_proxies_from_wapt_console()
app_name = control.name
download_url = "https://download.sysinternals.com/files/PSTools.zip"
latest_bin = download_url.split("/")[-1]
unzipped_dir = latest_bin.rsplit(".", 1)[0]
if isfile(latest_bin):
remove_file(latest_bin)
print(f"Downloading: {latest_bin}")
wget(download_url, latest_bin, proxies=proxies)
# The suite version is only available inside the archive
if isdir(unzipped_dir):
remove_tree(unzipped_dir)
unzip(latest_bin, unzipped_dir)
expected_issuer = "Microsoft Corporation"
sign_name = waptlicences.check_exe_signing_certificate(makepath(unzipped_dir, "PsExec.exe"))[0]
if sign_name != expected_issuer:
error(f"Bad issuer {sign_name} != {expected_issuer}")
with open(makepath(unzipped_dir, "psversion.txt"), "r") as f:
version = f.read().split(":")[-1].strip()
remove_tree(unzipped_dir)
print(f"Latest {app_name} version is: {version}")
if Version(version) > Version(control.get_software_version()):
print(f"Software version updated (from: {control.get_software_version()} to: {Version(version)})")
package_updated = True
else:
print(f"Software version up-to-date ({Version(version)})")
control.set_software_version(version)
control.save_control_to_wapt()
return package_updated
c26c6ba44997e650a733df257c8feb83898d3faef2d2e391869d107e40863553 : PSTools.zip
01ca7fe94636e5a08fcb73849d3b5df25d51e2c82f4dd1a08f01798b25899819 : WAPT/certificate.crt
d24445cc3e3b4c8a70f80eecd40f99a440643813d4478e43ab76e4b810e44a47 : WAPT/control
db286f658156b91f0d39798bd5e7f3b776ab2fb330070894323afa6af77a8b10 : WAPT/icon.png
9e95e18fe2c7de21f5933035026aa6ca0f4178aa18e4f1e2e602564415a4f5ce : luti.json
94c0b8b48d7aa874008b198c926aa5ec354dff2957d56987f14aa027e9e51a5a : setup.py
71ad317afc6f79da2050833faf407ae15e48c53e3a8bdae5ddd7803d75bcf9dc : update_package.py