hogar - Servicio
Cómo ejecutar un programa de forma remota. Ejecutar comandos de consola en computadoras remotas a través de una red

PsExec: una utilidad para ejecutar comandos de forma remota

Ejecutar comandos en una computadora remota es una tarea bastante común. Esto puede ser necesario para cambiar la configuración del sistema, instalar o eliminar programas y mucho más. Existen bastantes herramientas diferentes para resolver este tipo de problemas, empezando por soluciones serias. sistemas de software como System Center Configuration Manager y terminando con utilidades modestas línea de comando. Una de estas utilidades se discutirá en este artículo.

La utilidad PsExec es parte del paquete PsTools de Sysinternals. Le permite ejecutar comandos en computadoras remotas y no requiere instalación en el sistema. Para utilizar la utilidad, simplemente cópiela en la carpeta con archivos ejecutables (por ejemplo, C:\Windows\system32) y ejecútela desde cualquier shell de línea de comandos: Cmd o PowerShell.
El principio de funcionamiento del programa es el siguiente: en los recursos del archivo ejecutable PsExec.exe hay otro archivo ejecutable: PSEXESVC, que es un servicio de Windows. Antes de ejecutar el comando, PsExec descomprime este recurso en la carpeta administrativa oculta de la computadora remota Admin$ (C:\Windows), en el archivo C:\Windows\system32\psexesvc.exe.

Nota. Si estás usando la clave -C Indique al programa que es necesario copiar archivos ejecutables a este sistema, también se copiarán a esta carpeta.

Una vez completada la copia, PsExec instala e inicia el servicio usando la API. características de Windows para gestionar servicios. Luego, después de iniciar PSEXESVC, se establece una conexión entre este y PsExec para transferir datos (ingresar comandos y recibir resultados). Cuando se completa, PsExec detiene el servicio y lo elimina de la computadora de destino.

La sintaxis de PsExec es la siguiente:

psexec \\computadora [-u usuario [-p contraseña]] programa [argumentos]

No es necesario especificar un nombre de usuario y contraseña, luego el proceso remoto se inicia desde el mismo cuenta, como el programa PsExec. Sin embargo, dado que el proceso remoto está suplantado, no tendrá acceso a los recursos de red del sistema remoto. Si especifica un nombre de usuario, el proceso remoto se ejecutará con la cuenta especificada y obtendrá acceso a los mismos recursos de red del sistema remoto que esta cuenta. Sin embargo, tenga en cuenta que la contraseña se envía al sistema remoto en texto sin cifrar.

Como ejemplo, borremos el caché DNS en la computadora remota SRV1:

psexec\\SRV1 ipconfig /flushdns

El comando se ejecutará en la computadora SRV1 usando sus credenciales. Una vez que se complete ipconfig, toda la salida de texto se enviará a su computadora y, además, se devolverá el código de ejecución del comando (código de error). Si el comando se ejecutó correctamente, será igual a 0.

Si necesita ejecutar varios comandos, es mejor establecer una sesión interactiva con la computadora remota. Para hacer esto, ingrese el comando psexec\\SRV1 cmd. Ahora los comandos ingresados ​​en la computadora local se ejecutarán en la computadora remota SRV1.


PsExec le permite ejecutar un comando en varias computadoras simultáneamente. Para hacer esto, puede ingresar los nombres de las computadoras separados por comas: psexec\\SRV1, SRV2 o guárdelos en un archivo de texto y luego especifique su dirección: psexec @c:\comp.txt. Si pones un asterisco en lugar del nombre de la computadora, así: psexec\\*, entonces el comando se ejecutará en todas las computadoras del dominio.


y uno mas manera interesante utilizando la utilidad PsExec. Si no especifica un nombre de computadora, el comando se ejecuta en el sistema local de forma predeterminada. Usando la llave -s Puede ejecutar programas bajo la cuenta del sistema. Por ejemplo, iniciemos una sesión de línea de comando: psexec -scmd y luego con el comando quién soy Comprobemos con qué usuario estamos trabajando actualmente. Esta característica puede ser útil para depurar programas o acceder a claves de registro ocultas SAM y SECURITY.


Bueno, unas palabras sobre las claves del programa. No te lo describiré todo, pero te contaré los más interesantes:

El programa especificado se copia al sistema remoto para su ejecución. Por ejemplo:

psexec \\SRV1 -c prueba.exe

Si no se especifica este parámetro, la aplicación debe estar ubicada en la carpeta del sistema de la computadora remota. Si dicho programa ya existe en la computadora remota y no está ubicado en el directorio del sistema, debe especificar la ruta completa (si el nombre del programa contiene espacios, debe colocarse entre comillas):

psexec \\SRV1 "c:\archivos de programa\test.exe"

Si junto con la llave -C usa la llave -F entonces, incluso si el programa ya está en el sistema remoto, se sobrescribirá. y con una llave -v se sobrescribirá sólo si la versión copiada del programa es más reciente que la instalada en el sistema.

El programa funciona en modo interactivo. De forma predeterminada, PsExec ejecuta comandos en modo oculto, es decir, no se muestran ventanas ni cuadros de diálogo en el sistema donde se ejecuta el comando. Sin embargo, es posible cambiar esto usando la tecla -i. Después de eso, puede especificar el número de sesión en la que se mostrarán las ventanas, o no puede especificarlo, luego la interfaz se mostrará en la sesión de la consola.

Indica que no es necesario esperar a que se complete la solicitud. En este caso no recibiremos datos de salida de la utilidad de la consola, pero podremos ejecutar las siguientes sin esperar a que se complete el comando anterior. Esta opción sólo debe usarse cuando se ejecutan aplicaciones no interactivas.

Se utiliza para ejecutar el programa en modo. Puede ser requerido en sistemas operativos Windows Vista y superiores para ejecutar algunos programas que realizan cambios en la configuración del sistema (por ejemplo, regedit).

Y con la ayuda de esta clave, puedes, por el contrario, reducir la potencia. Cuando se inicia un proceso, el usuario, independientemente de su membresía en el grupo de administradores, recibe derechos limitados(los derechos del grupo Administradores se revocan y al usuario se le otorgan solo los derechos asignados al grupo Usuarios).

Lleno información de contexto Puede obtener información sobre todas las claves del programa simplemente ingresando el comando psexec en la línea de comando sin parámetros.

Este artículo explica cómo realizar comandos de consola en computadoras remotas en la red, se dan algunos ejemplos muy útiles para administradores de sistemas equipos.

Utilizo 2 herramientas para la ejecución remota de comandos de la consola: PsExec y WinRM, cada una de ellas tiene sus propias ventajas.

PsExec

Una de las excelentes soluciones al problema planteado en el título es utilizar el programa PsExec del gran Mark Russinovich.

El programa funciona según el principio cliente-servidor: un cliente se ejecuta en la máquina local, que envía comandos a un servidor en una computadora remota. Una característica especial de este programa es que la parte del servidor se instala automáticamente inmediatamente antes de ejecutar el comando y luego se elimina. Por tanto, para ejecutar comandos en máquinas remotas, basta con tener derechos administrativos sobre ellas.

Si PsExec se ejecuta como administrador que forma parte del mismo dominio que la computadora remota, ni siquiera necesitará ingresar ninguna credencial. De lo contrario, puede especificarlos en la línea de comando o PsExec se los solicitará. PsExec se ejecuta en sistemas operativos que van desde Windows 2000 hasta Windows Server 2008 R2 de 64 bits.

Las siguientes características son muy útiles en PsExec:

  • Ejecutar un comando en un grupo de computadoras. Ejemplo: El siguiente comando fuerza la última políticas de grupo:
    psexec @group.txt gpupdate /fuerza
  • Ejecutar comandos como cuenta del sistema. Ejemplo: el siguiente comando obligará al sistema remoto a buscar actualizaciones:
    psexec \\computadora -s wuauclt /detectnow
  • Copiar un programa en ejecución a una computadora remota antes de ejecutarlo. Ejemplo: el siguiente comando actualizará su membresía de esta computadora en el grupo de seguridad Directorio Activo(token de acceso) sin reiniciar:
    psexec \\computer -c -s klist.exe purgar

Es difícil sobreestimar la utilidad de este programa si utiliza scripts y las capacidades de los comandos de la consola integrados en Windows.

Gestión remota de Windows

Inicialmente era una tecnología de servidor para control remoto hardware, que se introdujo en Windows Server 2003 R2 como parte de la función de administración de hardware, pero que Microsoft lanzó recientemente paquete de ventanas Management Framework, que incluye PowerShell 2.0 y WinRM 2.0 y se instala en los sistemas operativos del cliente como una actualización. Los detalles se pueden encontrar en el artículo KB968929.

La belleza de WinRM es la facilidad de implementación en un entorno de dominio a través de WSUS como una actualización opcional del sistema operativo y la potencia que proporciona cuando se usa junto con PowerShell.

El uso de WinRM se produce a través de 2 comandos.

winrm.cmd Sirve para configurar ajustes y diagnosticar el cliente y servidor WinRM.

Para que el servidor WinRM comience a aceptar comandos, el servicio de windows Se ha completado la Gestión Remota y su configuración inicial. usa el comando

winrm quickconfig en la máquina local, o un truco con tus oídos
psexec -s \\servername winrm quickconfig a través de la red usando PsExec como cuenta del sistema.

Se le pedirá que inicie automáticamente el servicio WinRM y permita conexiones remotas, acepte;)

Para conectarse con éxito a un servidor WinRM (es decir, la parte del servidor que recibe comandos) que no forma parte del mismo dominio que su computadora cliente, debe agregar este servidor de destino a la "lista de confianza" en el cliente con el siguiente comando:

winrm set winrm/config/client @(TrustedHosts="servername") , donde en lugar del nombre del servidor puede especificar una dirección IP o * (asterisco).

Para Usuarios de Windows Vista y Windows 7, que no se ejecutan como administrador integrado (este suele ser el caso), debe ejecutar el siguiente comando

reg agregar HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f

De forma predeterminada, hay un límite de 5 conexiones WinRM simultáneas desde el cliente, para aumentar este número ejecute el comando

winrm s winrm/config/winrs @(MaxShellsPerUser="X")

winrs.exe— un cliente para enviar solicitudes a la parte del servidor. Ejemplo: El siguiente comando forzará un reinicio del sistema remoto...

winrs -r: apagado del nombre del servidor /r /t 0

En un entorno de dominio, las credenciales del usuario en ejecución se utilizan al enviar comandos. Para enviar comandos en nombre de otro usuario, utilice los modificadores -u:user -p:pass. Ejemplo: el siguiente comando borrará la caché de nombres DNS local en el sistema remoto

winrs -r:nombre del servidor -u:usuario -p:pass ipconfig /flushdns

Utilidades como Telnet y programas de gestión remota como PC Anywhere de Symantec permiten ejecutar programas en sistemas remotos, pero no son fáciles de instalar porque también es necesario instalar un cliente. software en aquellos sistemas remotos a los que es necesario acceder. PsExec es una versión ligera de Telnet. Le permite ejecutar procesos en sistemas remotos utilizando todas las capacidades interactivas de las aplicaciones de consola, sin la necesidad de instalar manualmente el software del cliente. La principal ventaja de PsExec es la capacidad de llamar interactivamente a la interfaz de línea de comandos en sistemas remotos y ejecutar herramientas de forma remota como IpConfig. Este la única forma mostrar computadora local datos sobre el sistema remoto.

Nota. Alguno escáneres antivirus informar que uno o más de estos programas están infectados con el virus de “administración remota”. Ninguno de los programas incluidos en la suite PsTools contiene virus, pero han sido utilizados por virus, motivo por el que aparecen estas advertencias.

Instalación

Simplemente copie el programa PsExec en su carpeta ejecutable. Cuando ingresa el comando psexec, se muestra ayuda sobre la sintaxis del comando.

PsExec funciona en quirófanos sistemas windows Vista, NT 4.0, Win2000, Windows XP y Server 2003, incluidas las versiones del sistema operativo de 64 bits

Uso

Un artículo de Mark Russinovich en la edición de julio de 2004 de Windows IT Pro Magazine describe métodos adicionales para trabajar con el programa. PsExec.

uso: psexec [\\computadora[,computadora2[,...] | @file][-u usuario [-p contraseña]][-n s][-l][-s|-e][-x][-i [sesión]][-c [-f|-v]] [-w directorio][-d][-<приоритет>][-a n,n,... ] programa [argumentos]

computadora

Le dice a PsExec que ejecute la aplicación en la computadora o computadoras especificadas. Si no se especifica el nombre de la computadora, entonces el programa PsExec iniciará la aplicación en el sistema local, pero si en lugar del nombre de la computadora se especifica el carácter de asterisco (\\*), entonces el programa PsExec iniciará la aplicación en todas las computadoras. del dominio actual.

@archivo

Le indica a PsExec que ejecute la aplicación en todas las computadoras enumeradas en el archivo de texto especificado.

Los procesadores en los que se puede ejecutar la aplicación están separados por comas y los procesadores están numerados comenzando desde 1. Por ejemplo, para ejecutar la aplicación en los procesadores dos y cuatro, ingrese "-a 2,4".

El programa especificado se copia al sistema remoto para su ejecución. Si no se especifica este parámetro, la aplicación debe estar ubicada en la carpeta del sistema del sistema remoto.

Indica que no es necesario esperar a que se complete la solicitud. Esta opción sólo debe usarse cuando se ejecutan aplicaciones no interactivas.

El perfil de cuenta especificado no está cargado.

El programa especificado se copia en el sistema remoto, incluso si dicho archivo ya existe en el sistema remoto.

El programa iniciado obtiene acceso al escritorio de la sesión especificada en el sistema remoto. Si no se especifica ninguna sesión, el proceso se ejecuta en una sesión de consola.

Cuando se inicia el proceso, al usuario se le otorgan derechos limitados (los derechos del grupo Administradores se anulan y al usuario solo se le otorgan los derechos asignados al grupo Usuarios). En Windows Vista, el proceso comienza con un bajo nivel de confiabilidad.

Le permite configurar el retraso de la conexión a computadoras remotas (en segundos).

Le permite especificar una contraseña opcional para el nombre de usuario. Si se omite este parámetro, se le pedirá que ingrese una contraseña y la contraseña no se mostrará en la pantalla.

El proceso remoto se inicia desde la cuenta del sistema.

Le permite especificar un nombre de usuario opcional para iniciar sesión en el sistema remoto.

El archivo especificado se copia al sistema remoto en lugar del existente solo si su número de versión es superior o más reciente.

Le permite especificar el directorio de trabajo (ruta dentro del sistema remoto) para el proceso.

Muestra la interfaz de usuario en el escritorio de Winlogon (solo sistema local).

-una prioridad(una prioridad)

Le permite establecer diferentes prioridades para un proceso: -low (baja), -belownormal (por debajo del promedio), -abovenormal (por encima del promedio), -high (alto) o -realtime (tiempo real).

programa

El nombre del programa que se lanzará.

argumentos

Argumentos que se pasarán (tenga en cuenta que las rutas de los archivos deben especificarse como rutas locales en el sistema de destino).

Para especificar un nombre de aplicación que contenga espacios, utilice comillas, por ejemplo psexec \\marklap "c:\longname\app.exe". Los datos ingresados ​​se transfieren al sistema remoto cuando presiona la tecla "Enter", para finalizar el proceso remoto debe presionar la combinación de teclas Ctrl-C.

Si no se especifica un nombre de usuario, el proceso remoto se ejecuta desde la misma cuenta que PsExec. Sin embargo, dado que el proceso remoto está suplantado, no tendrá acceso a los recursos de red del sistema remoto. Si se especifica un nombre de usuario, el proceso remoto se ejecuta con la cuenta especificada y obtiene acceso a los mismos recursos de red en el sistema remoto que la cuenta. Tenga en cuenta que la contraseña se envía al sistema remoto en texto sin cifrar.

Al acceder a un sistema local, se puede utilizar esta versión de PsExec en lugar de Runas porque PsExec no requiere derechos de administrador.

Ejemplos

Este comando abre la interfaz de línea de comando interactiva en el sistema \\marklap:

psexec \\marklap cmd

Este comando ejecuta el programa IpConfig en el sistema remoto con el parámetro /all y muestra los datos resultantes en la pantalla del sistema local:

psexec \\marklap ipconfig /todos

Este comando copia test.exe al sistema remoto y lo ejecuta de forma interactiva.

psexec \\marklap -c prueba.exe

Si dicho programa ya está instalado en el sistema remoto y no se encuentra en el directorio del sistema, especifique la ruta completa a este programa.

psexec \\marklap c:\bin\test.exe

Este comando ejecuta Regedit de forma interactiva desde la cuenta del sistema para ver los datos de las claves de registro SAM y SECURITY:

psexec -i -d -s c:\windows\regedit.exe

Este comando se utiliza para llamar al programa. explorador de Internet en nombre de un usuario con derechos limitados:

psexec -l -d "c:\archivos de programa\internet explorer\iexplore.exe"



 


Leer:



Qué hacer si la computadora no ve el teléfono a través del puerto USB

Qué hacer si la computadora no ve el teléfono a través del puerto USB

¡Importante! Esta instrucción trata sobre dispositivos Android, es decir, formas de conectar su teléfono a Internet a través de una computadora mediante un cable USB...

Firmware de configuración de Asus rt n16

Firmware de configuración de Asus rt n16

Características técnicas de ASUS RT-N16 Interfaces: 1xWAN (RJ-45), 4xLAN (RJ-45) 10/100/1000 Mbit/s Punto de acceso Wi-Fi inalámbrico: IEEE 802.11...

Cómo averiguar el bitness del sistema operativo y el procesador en Windows

Cómo averiguar el bitness del sistema operativo y el procesador en Windows

Hoy me propongo discutir las ventajas y desventajas del sistema operativo de 64 bits, con el que están equipadas la mayoría de las computadoras modernas con sistema operativo...

Cómo desactivar el Firewall de Windows: desactivación completa y deshabilitación de programas individuales Cómo desactivar completamente el firewall de Windows 7

Cómo desactivar el Firewall de Windows: desactivación completa y deshabilitación de programas individuales Cómo desactivar completamente el firewall de Windows 7

¡Hola! Me alegro de estar contigo de nuevo. Llevo casi una semana sin escribir nada porque me involucré en una aventura llamada “Dinero español: ¡A la libertad!” ¿Quién en...?

imagen-feed RSS