zwitterion zwitterion - 3 months ago 21
PHP Question

'C:\wmic' is not recognized as an internal or external command, operable program or batch file

I want to display in a browser the load percentage of a cpu trough php.
This is the code I am using:

$command ="C:\\wmic cpu get loadpercentage";
echo shell_exec("$command 2>&1 ; echo $?" );


This is the output:

'C:\wmic' is not recognized as an internal or external command, operable program or batch file.


What am I missing?

Update - 1

Change the code to allow spaces between words:
$command ="C:\\wmic^ cpu^ get^ loadpercentage";


'C:\wmic cpu get loadpercentage' is not recognized as an internal or external command, operable program or batch file.


Now the entire line of code is being read, not only 'C:\wmic'

Answer

You have two problems, both of which we explored in the comments above:

  1. The actual WMIC binary is located at C:\Windows\System32\wbem\WMIC.exe, not C:\wmic. That path needs to be used in your PHP command.

  2. You are trying to use Unix-style shell concepts (redirecting STDERR to STDOUT, chaining commands with ;, and using echo and $?) on a Windows system.

    Simply running the command without all that stuff should work:

    echo shell_exec("C:\\Windows\\System32\\wbem\\WMIC.exe cpu get loadpercentage");