3.8K
PsExec es una útil herramienta de línea de comandos para que los administradores de sistemas ejecuten programas y comandos en computadoras remotas. Esta guía describe ejemplos útiles de cómo utilizar la herramienta PsExec para ejecutar comandos de forma remota.
Cómo descargar e instalar PsExec en Windows
PsExec.exe es parte del paquete PsTools de Sysinternals. Puedes descargarlo del sitio web de Microsoft (La versión actual es PsExec v2.43).
No se requiere instalación para PsExec. Simplemente descargue el PSTools.zip archivar y extraer el PsExec64.exe y PsExec.exe archivos a una carpeta local C:\Windows\System32.
La sintaxis de PsExec es la siguiente:
psexec \\RemotePCName [-u username[-p password]] command [arguments]
Enumere las opciones de comando PsExec disponibles ejecutando el psexec en el símbolo del sistema.
Por ejemplo, para obtener el nombre de usuario actualmente conectado en la computadora remota llamada semanas11ejecuta el comando:
psexec.exe \\wks11 qwinsta
PsExec se conecta a una máquina remota, ejecuta el comando dado como argumento e imprime el resultado en la pantalla.
¿Cómo funciona PsExec?
- PsExec copia el psexesvc.exe ejecutable en el recurso compartido Admin$ de la computadora remota (C:\Windows\System32\psexesvc.exe), crea e inicia el PSEXESVC servicio;
- El PsExec local se conecta al PSEXESVC remoto, envía el comando y espera el resultado.
- Si el comando se ha ejecutado correctamente, verá un código de salida de 0.
- PsExec detiene el servicio y lo elimina automáticamente.
Para que PsExec se conecte a una computadora remota, se deben cumplir las siguientes condiciones:
Nota. Algunos programas antivirus pueden detectar por error PsExec como malware, una herramienta de piratería PUA (aplicación potencialmente no deseada) o una herramienta de administración remota.
Uso de PsExec para ejecutar comandos remotos con ejemplos
Veamos algunos ejemplos útiles del uso de PsExec para ejecutar comandos en computadoras remotas.
Ejecutar múltiples comandos con PsExec
Si necesita ejecutar varios comandos en una computadora remota uno tras otro, ejecútelos como argumentos para el cmd.exe comando, separándolos con && personajes. Por ejemplo:
PsExec -nobanner \\wks11 cmd /c 'net localgroup administrators user1 /add && net localgroup administrators'
Este comando agrega un nuevo usuario al grupo de administradores locales y enumera la membresía actual.
El -nobanner Esta opción le permite ocultar el banner de inicio de PsExec y el mensaje de derechos de autor.
Usando el modo interactivo PsExec
PsExec permite crear una sesión interactiva con una computadora remota y ejecutar comandos en tiempo real:
psexec \\lon-srv01 cmd
Esto abrirá un símbolo del sistema interactivo. Cualquier comando que escriba en la consola se ejecutará en la computadora remota lon-srv01.
Para detener una sesión interactiva de PsExec, ejecute:
Exit
Uso de PsExec con credenciales de usuario alternativas:
De forma predeterminada, PsExec utiliza el usuario actual para conectarse a la máquina remota. Puede configurar credenciales de usuario remoto alternativas en PsExec:
psexec.exe \\lon-srv01 -u user -p password cmd.exe
Ejecutando el comando PowerShell en PsExec
Incluso puedes usar PsExec para ejecutar comandos de PowerShell de forma remota. Por ejemplo, el siguiente comando le devolverá el tamaño del directorio C:\PS en la computadora remota:
psexec \\lon-srv01 powershell -ExecutionPolicy RemoteSigned -command "'{0:N2}' -f ((gci C:\PS | measure Length -Sum).Sum/1MB)"
Nota. Puede usar el cmdlet Invoke-Command en lugar de PsExec para ejecutar comandos de forma remota con PowerShell.
Copie y ejecute un archivo local en una computadora remota con PsExec
El -do El parámetro le permite especificar el nombre de un archivo local que desea copiar y ejecutar en una computadora remota.
psexec \\lon-srv01 -c c:\ps\myscript.bat
Para copiar e instalar software de forma remota desde el instalador MSI, use el comando:
psexec.exe \\lon-srv01 -c setup.msi –i –s "msiexec.exe /i setup.msi"
Nota. Debe encerrar la ruta entre comillas dobles si contiene espacios. Por ejemplo:
psexec \\lon-srv01 "c:\\Program Files (x86)\app1\app.exe"
Cómo utilizar PsExec para ejecutar comandos en varias computadoras remotas
PsExec permite ejecutar el comando en varias computadoras remotas simultáneamente. Puede especificar la lista de computadoras remotas separadas por comas:
psexec \\PC1,PC2,PC3,PC33 "ipconfig /all"
O guarde una lista de computadoras en un archivo de texto (un nombre de host en cada línea) y luego especifique la ruta a ese archivo:
psexec @c:\ps\computer_list.txt ipconfig
Para redirigir los resultados de la ejecución de comandos en computadoras remotas a un archivo de registro de texto:
PsExec @C:\Tools\computer_list.txt CMD /C "hostname & ipconfig" >> C:\Tools\log2.txt