Skip to main content

How to Get Processes Running on a Remote Computer in Batch Script

When troubleshooting an unresponsive application on a remote server, or investigating why a machine is sluggish, checking the running processes is often the first step. You don't need to establish a full Remote Desktop connection or use third-party monitoring tools just to see what is consuming CPU or memory. A simple Batch script can retrieve this data directly.

In this guide, we will explore the best methods to list running processes on a remote machine using the native tasklist command and WMI via wmic.

Method 1: Using tasklist (Simplest Approach)​

The tasklist executable is a standard Windows tool used to display a list of currently running processes with their Process IDs (PIDs) and memory usage.

To query a remote computer, use the /s (system) switch followed by the computer name or IP address.

Syntax​

tasklist /s RemoteComputerName

Basic Script Example​

Here is a straightforward script that asks for a computer name and lists all its processes.

@echo off
setlocal EnableDelayedExpansion

set /p "TARGET_PC=Enter remote computer name: "

if "!TARGET_PC!"=="" (
echo No input provided. Exiting.
pause
exit /b
)

echo.
echo Fetching running processes from !TARGET_PC!...
echo ==============================================

REM Execute tasklist against the remote machine
tasklist /s "!TARGET_PC!" 2>nul

if !ERRORLEVEL! neq 0 (
echo.
echo [ERROR] Could not connect to !TARGET_PC!. Check permissions and network.
)

echo ==============================================
echo Done.

endlocal
pause

Filtering with tasklist /fi​

Listing hundreds of processes isn't always useful. You often need to find a specific executable like "SQLServer.exe" or "notepad.exe". The /fi (filter) switch is perfect for this.

Example: Searching for NotePad

tasklist /s "Server01" /fi "imagename eq notepad.exe"

Output:

Image Name PID Session Name Session# Mem Usage
========================= ======== ================ =========== ============
notepad.exe 1234 RDP-Tcp#1 2 6,420 K

Method 2: Using WMI via wmic (Advanced Detail)​

While tasklist is great for quick overviews, it doesn't provide the full command-line arguments used to launch a process or tell you exactly which user account is running the process. For deeper insights, you need Windows Management Instrumentation (WMI).

Queries using wmic process​

You can use the wmic command to target the remote machine using the /node: parameter.

wmic /node:"Server01" process list brief

This returns a wide, somewhat messy format. The real power of wmic comes from requesting specific properties.

Getting the Execution Path and Arguments​

If a process is running but you need to know exactly where the executable lives on the remote disk, use wmic.

wmic /node:"Server01" process where "name='java.exe'" get processid, executablepath, commandline

Output:

CommandLine ExecutablePath ProcessId
"C:\Java\bin\java.exe" -jar app.jar C:\Java\bin\java.exe 5432

This is incredibly useful for differentiating between multiple instances of "java.exe" or "python.exe" running different scripts.

Advanced Search Script: The Hybrid Approach​

A professional batch script often wraps these commands to provide a clean, user-friendly output and handles errors gracefully.

The following script asks for a target PC and a process name to search for. It uses tasklist first because it is faster for simple checks over the network.

@echo off
setlocal

set "TARGET_PC=FileServer01"
set "PROCESS_NAME=explorer.exe"

echo Scanning %TARGET_PC% for process: %PROCESS_NAME%
echo.

REM Try tasklist first - filter and check if the process name appears in the output
tasklist /s "%TARGET_PC%" /fi "imagename eq %PROCESS_NAME%" 2>nul | find /i "%PROCESS_NAME%" >nul

if %ERRORLEVEL% equ 0 (
echo [FOUND] %PROCESS_NAME% is actively running on %TARGET_PC%.
echo ----------------------------------------------------

REM Output details neatly (no header)
tasklist /s "%TARGET_PC%" /fi "imagename eq %PROCESS_NAME%" /nh 2>nul

echo ----------------------------------------------------
) else (
echo [NOT FOUND] The process %PROCESS_NAME% is not running or access was denied.
)

endlocal
pause
Access Denied Errors

Both tasklist and wmic require administrative privileges on the target remote computer. If you run these scripts as a standard user, you will encounter immediate errors.

Always run your administrative scripts from an elevated command prompt configured with domain admin rights, or use the /u and /p switches carefully (tasklist /s Server01 /u Domain\AdminUser /p Password). Remember that hardcoding passwords is a security risk.

Conclusion​

Getting a list of running processes on a remote machine is a staple of Windows administration. By using tasklist /s for fast overviews and filtering, and wmic /node: when you need deep details like the executable path or command-line arguments, you can vastly improve your remote troubleshooting capabilities through simple Batch scripting.