Como mencioné en la respuesta de lyceus, su código fallará en Windows de configuración regional que no esté en inglés porque la salida de modepuede no contener las subcadenas "columnas" o "líneas":

Puede encontrar la subcadena correcta sin buscar texto:
preg_match('/---+(\n[^|]+?){2}(?<cols>\d+)/', `mode`, $matches);
$cols = $matches['cols'];
Tenga en cuenta que ni siquiera me estoy molestando con las líneas porque no es confiable (y en realidad no me importan).
Editar: Según los comentarios sobre Windows 8 (oh, tú ...), creo que esto puede ser más confiable:
preg_match('/CON.*:(\n[^|]+?){3}(?<cols>\d+)/', `mode`, $matches);
$cols = $matches['cols'];
Sin embargo, pruébelo porque no lo probé.