Saltar al contenido

Ejecutar archivo bat remotamente con PSEXEC

Es de bastante utilidad saber como ejecutar archivo bat remotamente, ya que puede ayudarnos a optimizar el tiempo en que se realiza un proceso que estamos por ejecutar, evitando ir equipo por equipo realizando o cambiando la configuración, existe una herramienta de la cual ya hemos hablado anteriormente en varios artículos el cual es PSExec esta herramienta es fundamental para un administrador de Red.

Pasos para ejecutar archivo remotamente con PSExec

Requisito, tener usuario con privilegios de administrador y tener las Herramientas PSTools (Ver publicación)

  • Primero preparamos el archivo .bat que deseamos ejecutar en los equipos remotos, Este debemos guardarlo en la carpeta PSTools, si no debemos indicar la ruta completa al archivo.
  • Ahora preparamos el listado de equipos en el cual vamos a ejecutar el archivo, el cual debe ser como se muestra en la imagen inferior, si deseamos ejecutar el archivo en todos los equipos que esten conectados a la red, solo debemos poner \\* en la parte inferior se muestra un ejemplo.ejemplo-txt-inventario
  • Una vez creados estos, procuramos guardarlos en una carpeta fácilmente accesible desde la consola (por ejemplo en el C:\ en mi caso yo tengo una carpeta llamada Scripts en el C:\ donde tengo todos los Scripts que he llegado a ejecutar)
  • Ejecutamos el siguiente comando, donde -u usuario y -p clave  se puede evitar si tenemos privilegios de administrador de red.

psexec @C:\ListadoDePCs.txt -u usuario -p clave -d -c -f nombrearchivo.bat

-u: Usuario.

-p: Clave.

-d: No esperar a que el proceso termine en cada equipo (Cuando sea ejecutado continua con el siguiente equipo).

-c: Copiar archivo al equipo remoto para ejecutarlo.

-f: Se utiliza para indicar que el archivo sea copiado aun que ya exista este (Sobrescribe).

-h: Ejecutar con privilegio elevado de la cuenta, si está disponible. (Vista o superior)

  • Ejemplo 2: Si deseamos ejecutar el archivo en todos los equipos de la red lo podemos realizar de la siguiente manera.

psexec \\* -d -c -f nombrearchivo.bat

  • Ejemplo: En este solo lo ejecute en un solo equipo ya que no quiero modificar la configuración DHCP el cual es lo que hace mi archivo bat. como vemos en la imagen nos muestra que fue comenzado en el equipo X con el ID del proceso X. asi nos debe mostrar con todos para saber que se inicio en todos los equipos.psexec-ejecutar-archivo-bat-remotamente
  • Este también se puede utilizar para ejecutar archivos como vbscript, etc.

Entradas relacionadas

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Comentarios (23)

Hola Buen Día,

Gracias por la información, queria consultarte algo, cuando ejecuto el comando me saca este mensaje.
Could not start PSEXESVC service on 10.75.40.24:
Acceso denegado.
Que podra ser, le estoy colocando los datos del usuario administrador.

De antemano gracias.

Responder

Buen día
Va a tener que ver con los privilegios del usuario o el equipo, los equipos deben estar en el mismo Dominio o Grupo de trabajo también. Si tienes algún firewall o antivirus aparte de los de Windows tal como Kaspersky, Nod32 o cualquier antivirus en su versión internet security estos pueden llegar a bloquear estos comandos porque lo toman como intrusión de Red (PSEXEC sobre pasa el firewall de Windows).
Nos puedes proporcionar el comando que estas utilizando.

Responder

Quisiera saber como obtener un log de todo lo realizado con el comando que mencionaste, por ej. ejecute un comando que me da las versiones de IE en todos los equipos de mi red, pero quisiera que me lo deje en un txt. Sabrias como? desde ya muchísimas gracias.

Responder

Buen dia Gaston!

Para exportar debes agregar al final > c:/Ruta/infoaexportar.txt para que se guarde en un TXT o | clip para que se copie al porta papeles (funciona en Windows en Ingles)
Mas información en el articulo Exportar el resultado de la linea de comando (CMD) a un archivo

Cualquier consulta o comentario no dudes en escribirnos.

Saludos.

Responder

las imagenes de los ejemplos estan caidos por favor subanlos de nuevo gracias.
Saludos.

Responder

Buen dia Victor

Una disculpa tuvimos un inconveniente en el sitio y estamos reconstruyendo este nuevamente, ya se encuentran nuevamente las imágenes en el sitio.

Saludos.

Responder

Algo que podría serles de utilidad:
Si ejecutan el comando en una red corporativa que tiene al usuario “Administrador Local” deshabilitado en los equipos de computo pero disponen de alguna cuenta de red con privilegios elevados entonces deben agregar el parámetro “-h” luego del usuario y contraseña, de esa manera van a poder ejecutar sus BAT con elevación de privilegios.

Responder

Buen dia

Muchas gracias por la retroalimentacion Ignacio:) actualizamos el articulo con la instrucción.

Saludos.

Responder

Hola buen tuto. Mi duda es como se define la ruta para q sepa donde copiar el archivo .bat en el equipo remoto. Y lo otro es si la herramienta PSEXEC debe estar instalado en el equipo remoto tambien o no sería necesario. Saludos

Responder

Buen dia Obed

No es necesario especificar ruta para el bat. Solo que este instalada en tu equipo es suficiente donde debes tener privilegios de administrador.

Excelente dia.

Responder

Hola buen tuto, tengo una consulta. Como hago para crear un .txt por equipo en una misma carpeta compartida. Ya tengo todo pero me re inscribe el archivo txt Gracias!!

Responder

Buen dia

Desde command Prompt para agregar al mismo archivo debes usar doble > por ejemplo: ipconfig >> archivo.txt

Me comentas si es lo que requieres.

Excelente dia

Responder

Cómo ingresar con psexec sin necesidad de ingresar por carpeta compartida, ejemplo se ejecuta psexec \\1.1.1.1 CMD cuándo lo ejecutado de esa manera se queda en conectando y al final te dice que necesitas ingresar por shared folder algo así, yo solo necesito ingresar por consola sin necesidad de abrir ejecutar y poner nuevamente la IP para que se conecte por CMD, habrá algún parámetro.

Saludos!

Responder

Buen dia Antonio,

El error es un poco amplio, pueden ser privilegios de usuario en la Red, también conflictos en las IP al resolver la dirección.

Intenta también ingresando los datos de administrador de Red por ejemplo:

psexec \\1.1.1.1 -u dominioadministrator -p clave -s cmd

o también intentar ejecutando la instrucción sin establecer conexión permanente

psexec \\1.1.1.1 -u dominioadministrator -p clave -s ipconfig

Espero comentarios.

Excelente dia.

Responder

hola tengo que copiar un archivo .pdf de mi equipo y pegarlo en el escritorio a 1100 equipos en forma remota pudo ejecutar alguna sentencia para no hacerlo uno por uno?

Responder

Hola necesito copiar un archivo a varias pcs que estan en dominio, se puede con psexec? como se declara la sentencia para poder mandarlo? Con robocopy lo estoy haciendo pero se atora

Responder

Buen dia Otto

Con PSExec también estarías ejecutando una instrucción CMD como Copy o Robocopy de igual forma intenta con lo siguiente sin utilizar PSExec.

for /f %a in (C:ListaPCs.txt) do copy /y /z \\PCRemotoArchivosArchivo.pdf \\%ac$UsuarioNombreEscritorio

Si estas creando un archivo batch requieres doble %% en todas las declaraciones Ej. %%a.
Intenta eso y me comentas se agrego /z porque tienes problemas para ejecutarlo puede ser tu Red que trunca la copia si esta saturada, tambien es posible que requieras ejecutarlo como administrador.

Por otro lado, envíame lo que estas utilizando y que te marca para no repetir respuestas.

Excelente dia.

Responder

buenas tardes tengo estas 2 sentencias pero ninguna me funciona no se si tengo que ejecutarlo desde una ubicacion determinada. tengo privilegios de administrador

psexec @c:list.txt -d -c -f d:batscsillavecsi.bat

psexec @c:list.txt -d -c -f c:windowsllavecsi.bat

lo que tengo duda es, el archivo llavecsi.bat lo tengo en mi equipo como esta en esta en la primera sentencia y tambien lo tengo ya en todos los equipos en c:windowsllavecsi.bat como en la segunda sentencia

pero de ninguna forma puedo ejecutar ese .bat algo falla y no doy con que. ese bat me edita el regedit y si lo hago manuel si funciona. esto tiene la llavecsi.bat

REG ADD HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun /v CSI /t REG_SZ /d “C:WindowsCSI.vbs”

lo que quiero es ejecutar el archivo llavecsi.bat para que me agregue esto al registro de inicio. o alguna manera mas facil sin complicarme la vida?

Responder

Buen dia OTTO

Puedes verificar que puedas entrar al CMD en uno de los equipos por medio de PSEXEC

psexec \\IP CMD

Quiero ver si te muestra algun mensaje.

Se supone que agregando -c no importa donde tengas almacenado el archivo siempre y cuando apunte a la ruta local donde se ejecuta el archivo.
Yo este siempre lo he utilizado desde carpetas compartidas generales (Que todos los equipos tienen).

Quedo en espera de tu comentario.

Excelente dia.

Responder

Sale espacio de almacenamiento insuficiente para procesar este comando

Responder

Buen dia Otto

Debes aumentar el valor del IRPStackSize revisa la siguiente documentacion de Microsofrt

Puedes probar con PowerShell, para agregar el registro.

$Computers = Get-Content “C:listapc.txt”
$Path = “HKLM:SOFTWAREMicrosoftWindowsCurrentVersionRun”
$Property = “CSI”
$Value = “C:WindowsCSI.vbs”

$results = foreach ($computer in $Computers)
{
If (test-connection -ComputerName $computer -Count 1 -Quiet)
{
Try {
Set-ItemProperty -Path $path -Name $Property -Value $Value -ErrorAction ‘Stop’
$status = “Success”
} Catch {
$status = “Failed”
}
}
else
{
$status = “Unreachable”
}

New-Object -TypeName PSObject -Property @{
‘Computer’=$computer
‘Status’=$status
}
}

$results |
Export-Csv -NoTypeInformation -Path “C:/APPS/out.csv”

Responder

Buen dia, es posible ejecutar un menu batch que esta en el remoto utilizando psexec? gracias

Responder

Buen dia Gonza

No he interactuado con un archivo menu batch remotamente con PSExec pero en teoría debe funcionar ya que te permite entrar a la consola remota

por ejemplo: psexec -u usuario -p clave \\10.0.0.100 -s -d cmd.exe /c \"C:Appsfile.bat\"
Con -i lo haces interactivo para el usuario remoto, de lo contrario tu veras el resultado.

Excelente dia.

Responder
Leer entrada anterior
Obtener dirección IP, Subnet, Gateway, Servidor DNS y MAC de todos los equipos en la Red

Tener la información completa de la configuración de Red de cada equipo es primordial para tener un buen control la...

Cerrar