Acabo de publicar una entrada sobre cómo obtener impresoras en Windows. Pues podemos modificar dicho comando para que diga si son o no compartidas, y dependiendo de eso incluirlas en un arreglo
El comando queda modificado así:
get-WmiObject -class Win32_printer |ft shared, name
Como vemos, en la otra entrada sólo obtenemos el nombre con name. En este caso también queremos ver si está compartida usando shared. Así es la salida:
Una vez que tenemos esto vamos a ir a PHP y parsear todo. Vamos a incluir sólo las que estén compartidas:
<?php
$ruta_powershell = 'c:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe'; #Necesitamos el powershell
$opciones_para_ejecutar_comando = "-c";#Ejecutamos el powershell y necesitamos el "-c" para decirle que ejecutaremos un comando
$espacio = " "; #ayudante para concatenar
$comillas = '"'; #ayudante para concatenar
$comando = 'get-WmiObject -class Win32_printer |ft shared, name'; #Comando de powershell para obtener lista de impresoras
$delimitador = "True"; #Queremos solamente aquellas en donde la línea comienza con "True"
$lista_de_impresoras = array(); #Aquí pondremos las impresoras
exec(
$ruta_powershell
. $espacio
. $opciones_para_ejecutar_comando
. $espacio
. $comillas
. $comando
. $comillas,
$resultado,
$codigo_salida);
if ($codigo_salida === 0) {
if (is_array($resultado)) {
#Omitir los primeros 3 datos del arreglo, pues son el encabezado
for($x = 3; $x < count($resultado); $x++){
$impresora = trim($resultado[$x]);
# Ignorar los espacios en blanco o líneas vacías
if (strlen($impresora) > 0) {
# Comprobar si comienzan con "True", para ello usamos el delimitador declarado arriba
if (strpos($impresora, $delimitador) === 0){
#Limpiar el nombre
$nombre_limpio = substr($impresora, strlen($delimitador) + 1, strlen($impresora) - strlen($delimitador) + 1);
#Finalmente agregarla al array
array_push($lista_de_impresoras, $nombre_limpio);
}
}
}
}
echo "<pre>";
print_r($lista_de_impresoras);
echo "</pre>";
} else {
echo "Error al ejecutar el comando.";
}
?>
Con eso tenemos para obtener la lista de impresoras compartidas. Esto es útil por ejemplo cuando queremos imprimir un ticket en una impresora térmica, ya que la librería dice que dicha impresora debe estar compartida.
En este post te voy a enseñar a designar una carpeta para imprimir todos los…
En este artículo te voy a enseñar la guía para imprimir en una impresora térmica…
Hoy te voy a mostrar un ejemplo de programación para agregar un módulo de tasa…
Los usuarios del plugin para impresoras térmicas pueden contratar licencias, y en ocasiones me han…
Hoy voy a enseñarte cómo imprimir el € en una impresora térmica. Vamos a ver…
En este post te enseñaré a imprimir la letra ñ en una impresora térmica. Voy…
Esta web usa cookies.
Ver comentarios