netstat с переключателем /?
печатает не в стандартном выводе (stdout), а в стандартной ошибке (stderr). Поскольку ваш код PHP не делает никаких действий для захвата stderr, вы получаете только (пустой) стандартный вывод. Если вы запускаете PHP из командной строки, вы все равно должны видеть stderr, но если вы запускаете PHP, хотя веб-сервер (который, как я предполагаю, имеет место в данном случае), тогда stderr отбрасывается. Однако это само по себе не объясняет пустой вывод, поскольку shell_exe c () возвращает (выделено мое):
Вывод выполненной команды или NULL
если произошла ошибка или команда не выдаст .
В любом случае, если вы не хотите возиться с pipe Вы можете просто перенаправить stderr на стандартный вывод :
var_dump(shell_exec('netstat /? 2>&1'));