en la lección de hoy en nuestra serie de escuelas Geek que cubre SysInternals, vamos a mostrarle cómo usar el conjunto de Utilidades PsTools para realizar todo tipo de tareas de administración tanto localmente como en equipos remotos.,
si alguna vez ha querido conectarse a otro equipo y ejecutar un comando, Obtener rápidamente información sobre los procesos que se ejecutan y, opcionalmente, eliminarlos, o incluso detener un servicio en otro PC, puede usar las utilidades PsTools para hacer todas estas cosas y aún más.
obviamente, puede usar Remote Desktop o un servicio similar para conectarse a cualquier computadora con Windows y realmente ver el escritorio y hacer cualquier cosa que haría localmente, pero las utilidades PsTools le permiten hacer muchas tareas desde la línea de comandos, o mejor aún, desde un script que puede reutilizar más tarde.,
Estos son los tipos de utilidades que funcionan mejor en un entorno corporativo, y el dominio de estas herramientas definitivamente lo hará mucho mejor en su trabajo de administración de sistemas, le ahorrará tiempo y le permitirá hacer las cosas de una manera mucho más inteligente. Hacer las cosas de manera más inteligente y rápida es una habilidad crítica para ser un gran administrador de sistemas.
hay doce herramientas en el conjunto de PsTools, y mientras que algunas de ellas son extremadamente útiles, otras han sido reemplazadas por herramientas integradas en versiones más recientes de Windows, y hay algunas otras que no son útiles para la mayoría de las personas., Revisaremos todos ellos para que entiendas cómo funcionan y por qué es posible que quieras usar cada uno.,ENT log on the command line
vale la pena señalar que puede utilizar una herramienta como PsExec para ejecutar todo tipo de utilidades de línea de comandos en equipos remotos including incluyendo las realmente útiles como la herramienta de línea de comandos autoruns y muchas más., Las posibilidades son infinitas una vez que has abrazado el poder de PsTools.
todas estas herramientas se pueden utilizar en equipos locales, pero son principalmente útiles para conectarse a equipos remotos y realizar comandos en ellos.
conexión a equipos remotos (sintaxis para todas las utilidades)
todos los utilites se pueden ejecutar en el equipo local o remoto, por lo que todos tienen el mismo primer argumento para el nombre del equipo si es necesario. Tenga en cuenta que podría usar la dirección IP si lo desea en su lugar., Si omite este argumento, el comando funcionará en su equipo local.
psinfo \\computername
Usted también puede enumerar varios equipos como psinfo \\equipo1, equipo2, computer3, o usted podría poner todos los nombres en un archivo de referencia y que como psinfo @computerlist.txt. La sintaxis final es psinfo \ \ * que funciona en todos los equipos en el dominio, que probablemente no es algo que va a utilizar todos los días.,
si necesita conectarse con credenciales alternativas porque la cuenta de su equipo local tiene un nombre de usuario y una contraseña diferentes a los del otro equipo, puede usar las opciones-u Y-p, aunque es posible que no desee usar-p en la línea de comandos con una contraseña en el comando por razones de seguridad. Actualización: a partir de la última versión de PsExec, ninguna herramienta pasa contraseñas como texto claro, por lo que la única preocupación es si alguien puede leer sus archivos de script y ver la contraseña allí.,
psinfo \\computername-u «user» -p «Password»
la parte «user» del comando cambiaría a «DOMAIN\user» si se encuentra en un entorno de dominio y necesita cambiar del usuario que se está ejecutando actualmente.
Nota: generalmente necesitará conectarse a los equipos remotos con una cuenta de administrador.
configurar el acceso de Administración Remota
si se encuentra en un entorno de dominio, como lo estará la mayoría de las personas que necesitan usar PsTools, puede ignorar esta sección por completo, ya que todo debería funcionar bien., Para cualquiera que ejecute Windows 7, 8 o Vista en un entorno doméstico o que use un par de computadoras en una oficina sin un dominio, deberá ajustar el Control de la cuenta de usuario en el equipo remoto para permitir que PsTools se ejecute correctamente.
Microsoft describe bien el problema:
Cuando un usuario que es miembro del grupo Administradores local en el equipo remoto de destino establece una conexión administrativa remota mediante el comando net use * \\remotecomputer\Share for, por ejemplo, no se conectará como administrador completo., El Usuario no tiene potencial de elevación en el equipo remoto y no puede realizar tareas administrativas.
para explicarlo de una manera diferente, cuando intenta conectarse a otro equipo y ejecuta algo que requiere acceso de administrador, no hay forma de activar el indicador UAC y aceptarlo desde su equipo, por lo que no se conectará como administrador.
Y esto no es una cosa mala., No debe cambiar esta configuración sin comprender completamente que permitirá una apertura para que el malware se propague de un equipo a otro, asumiendo que el malware tiene su nombre de usuario y contraseña locales, y que la contraseña es la misma que la otra computadora, y el malware es tan complicado, que la mayoría no lo es.
y de nuevo, si se encuentra en un entorno de dominio, este problema no existe y no es necesario cambiarlo. Y si solo está probando con un montón de máquinas virtuales, no tiene mucho de qué preocuparse.,
para modificar UAC para permitir que PsTools se ejecute, querrá abrir el Editor del registro y navegar a la siguiente clave:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\
Windows\CurrentVersion\Policies\System
Una vez allí, cree una nueva DWORD de 32 bits en el lado derecho, póngale el nombre LocalAccountTokenFilterPolicy y el valor de 1. No es necesario reiniciar el equipo para que la configuración surta efecto.,
Nota: solo para aclarar, esta configuración debe suceder en el equipo remoto que se conecta.
PsExec
PsExec es probablemente la herramienta más poderosa del kit, ya que puede ejecutar cualquier comando en su símbolo del sistema local al igual que ejecutarlo en el equipo remoto. Eso incluye todo lo que se puede ejecutar en la línea de comandos: puede cambiar los valores del registro, ejecutar scripts y utilidades, o conectarse desde ese PC a otro., La salida de los comandos se mostrará en su PC local, en lugar de en el remoto.
La sintaxis es simple:
psexec \\computername <opciones> apptorun.exe <argumentos>
de manera Realista, aunque, sería conveniente también incluir el nombre de usuario y la contraseña en la línea de comandos., Por ejemplo, para conectarse a otro PC y verificar la lista de conexiones de red, usaría algo como esto:
psexec \\computername-u User-p Password ipconfig
ese comando produciría una salida similar a la siguiente:
Si desea pasar la salida de un comando a otro comando, o si desea redirigir la salida a un archivo, normalmente solo haría algo como comando.salida exe >.txt, y lo mismo sucede con PsExec., Por lo tanto, un comando como el siguiente guardará la salida de netstat-an en un archivo en el directorio raíz de su computadora Local.
psexec \\computername netstat-an > C:\connections.txt
Si desea pasar el > o | a través de la conexión PsExec al equipo remoto, necesitará usar el carácter^, que es un carácter de escape poco conocido en el shell de comandos de Windows., Eso, por supuesto, significa que realmente necesitaremos usar el shell de comandos en el equipo remoto, y no solo ejecutar el proceso, para que podamos hacer el redireccionamiento o canalización en primer lugar. Así que eso hace que nuestro comando sea así (cambiando la ruta al directorio home donde tenemos acceso de escritura).
psexec \ \ computername cmd / c netstat-an ^> C:\users\geek\connections.,txt
Este ejemplo colocaría la lista de conexiones abiertas generadas por netstat en el directorio personal del usuario en el equipo remoto, en un archivo llamado connections.txt.
copiando programas en el PC remoto
no estás limitado a solo las aplicaciones en el PC remoto cuando usas PsExec, y de hecho, puedes ejecutar cualquier cosa que tengas localmente. Por ejemplo, si quería hacer un análisis de línea de comandos de Autoruns del sistema remoto, pero solo tenía autorunsc.exe en su computadora local, puede usar el interruptor-c para copiar la aplicación., PsExec eliminará la herramienta del sistema remoto Una vez que finalice el comando.
Este es un momento importante para mencionar la opción-accepteula de la mayoría de las herramientas SysInternals, que se asegurará de que el EULA ha sido aceptado en el equipo donde se ha ejecutado el comando. Necesitaremos agregar esto al autorunsc.comando exe o fallará en el equipo remoto.
psexec \\computername-C autorunsc.,exe-accepteula
hay algunas otras opciones que especifican si la aplicación siempre se copia, o si se debe copiar si la aplicación local es una versión superior a la remota. Solo puede ejecutar psexec desde el mensaje para ver esas opciones.
Nota: si un comando solo está disponible en el símbolo del sistema, debe agregar cmd / c antes de él. Esto incluye canalizaciones y redirecciones como / y >.,
interactuar con el usuario conectado en el PC remoto
puede usar el interruptor-i para iniciar la aplicación y permitir que el usuario remoto interactúe realmente con la aplicación. Probablemente querrás combinar esto con el interruptor-d, que no espera a que el proceso remoto termine antes de que PsExec te devuelva el control., Por ejemplo, este comando abriría una ventana de Bloc de notas en un equipo remoto:
psexec \\computername-d-i bloc de notas
También puede optar por ejecutar como usuario del sistema con la opción-s, que puede ser muy peligrosa. Por ejemplo, si desea abrir el Editor del registro en su propio equipo, pero con permisos de nivel de usuario del sistema, puede ejecutar este comando.
psexec-I-d-s regedit.,exe
en caso de que se lo pregunte, sí, esto le dará acceso a muchas cosas que normalmente no tendría acceso a editar en el registro. Y sí, es una muy mala idea.
ejecutar un símbolo del sistema completo a través de PsExec
Sí, acabamos de mostrarle todos esos ejemplos de cómo ejecutar un solo comando a través de PsExec… y resulta que puede ejecutar un shell completo en su computadora local que realmente se está ejecutando en el equipo remoto. Es como si estuvieras en la consola de ese servidor (en su mayor parte)., Y afortunadamente, la sintaxis para este es muy fácil (agregue el nombre de usuario si lo necesita).
psexec \ \ computername cmd.exe
Una vez que haya hecho esto, tendrá un símbolo del sistema que ahora se está ejecutando en el PC remoto.
El símbolo del sistema funcionará casi como de costumbre, excepto que la finalización de la pestaña no funcionará en absoluto, pero eso está bien con nosotros.,
vale la pena señalar que si desea ejecutar comandos de PowerShell de forma remota en otro equipo, puede hacerlo de forma nativa con algunos ajustes en la configuración. Desafortunadamente, PowerShell no funciona muy bien con PsExec a menos que use un montón de soluciones extrañas que no valen la pena.
otras opciones
el comando psexec tiene un montón de otras opciones realmente útiles que puede usar, cada una de ellas se usaría en el espacio justo después de \\computername y antes de cualquiera de los otros comandos., Así que piense psexec \ \ computername-option <remote command>.
si solo ejecuta el comando psexec desde el símbolo del sistema sin ningún interruptor adicional, verá todos ellos.
PsFile
Este comando muestra los archivos que están abiertos actualmente a través de la red en un PC local o un PC remoto, y funciona de manera similar al comando «net file» de Windows. La sintaxis es como cualquier otro comando en el kit.
archivo_xml \\computername
Sí, este no es tan divertido como el anterior.,
Si desea cerrar uno de los archivos y desconectar a la persona del recurso, puede cerrar la conexión utilizando la opción-c, aunque eso podría resultar en una pérdida de datos ya que el archivo no se cerró correctamente.
archivo_xml \\computername <ruta> -c
PsGetSid
Esto muestra el identificador de seguridad para un usuario o de equipo, y toma el estándar de argumentos., Esta utilidad es probablemente solo útil en escenarios muy particulares, de los cuales no hemos encontrado personalmente ninguno. Así que pruébalo una vez y olvídalo hasta que necesites usarlo algún día.
PsInfo
Este comando enumera mucha información útil sobre un sistema, incluido el tiempo de actividad, que es muy divertido. Puede ejecutar este localmente para probarlo simplemente escribiendo psinfo en el símbolo del sistema, asumiendo que sus herramientas SysInternals están en la ruta.,
si desea obtener mucha más información de PsInfo, y sé que lo hace, puede usar los siguientes conmutadores para agregar información de disco (-d) y revisiones (-h) y una lista de aplicaciones instaladas y sus versiones (-s).,
psinfo-d-h-s
esto da como resultado mucha más información, incluso en una máquina virtual casi en blanco:
psinfo remotamente agregando el nombre de la computadora y posiblemente el nombre de usuario cambia but pero hay un gran problema: no funcionará a menos que el servicio de registro remoto esté habilitado. Dirígete al final del artículo donde hablamos sobre cómo habilitarlo en el equipo remoto.,
PsKill
Este comando es realmente simple: mata procesos, ya sea por nombre o ID, y puede usar el interruptor — t para matar opcionalmente todo el árbol de procesos.
pskill \\computername <PID or Name>
El problema con PsKill es que las últimas versiones de Windows tienen una utilidad de eliminación de tareas muy poderosa incorporada llamada taskkill que tiene muchas más características.,
PsList
Esta utilidad es extremadamente simple, pero bastante útil para mirar rápidamente una computadora y ver si algo está usando demasiada CPU o memoria. Puede especificar el nombre o parte del nombre en la línea de comandos para reducir la lista a solo una aplicación problemática, y puede ver casi toda la información, incluidos los subprocesos.
nota: para que esta utilidad funcione en un equipo remoto, deberá tener habilitado el servicio de registro remoto. Asegúrese de leer hasta el final de la lección, ya que explicaremos cómo lidiar con eso más adelante.,
PsLoggedOn
Esta utilidad enumera las cuentas que han iniciado sesión en el equipo o que se conectan de forma remota. Es bastante simple, y en gran medida útil en un tipo de entorno de administrador de sistemas.
PsLogList
Esta utilidad muestra un registro de eventos local o remoto en la línea de comandos, y hay una serie de opciones que se pueden usar para filtrar los datos.,
psloglist \\computer System
también Hay la opción-h, -d y-m opciones, que permiten reducir la lista de eventos de las últimas x horas, días o minutos. La opción-n Muestra los registros de la lista x, mientras que el interruptor-r invierte el orden para que los últimos registros estén en la parte inferior de la salida. La última opción, que configuramos como «sistema» en este ejemplo, no es realmente necesaria; si la omite, el registro del sistema siempre se extraerá, pero podría cambiarlo a aplicación o seguridad para extraer esos registros en su lugar.,
vale la pena señalar que si tiene acceso de administrador a la otra computadora, simplemente puede abrir el Visor de eventos y elegir conectar en el menú Acción. Ingrese el nombre del equipo en la lista, cambie las credenciales si es necesario y acceda a los registros de eventos de esa manera.
El único escenario donde realmente podemos ver PsLogList ser realmente útil es que si usted quería un script algo para realizar una acción en el caso de ciertos mensajes en el registro de sucesos.,
PsPasswd
Esta utilidad le permite cambiar las contraseñas de los usuarios, tanto locales como remotos. La sintaxis es la misma que todo lo demás:
Pspasswd \\computer-u User-p Password <AccountToChange> <newpassword>
el beneficio de esta utilidad sobre el uso de net user desde el símbolo del sistema normal es que puede cambiar las contraseñas de varios equipos a la vez, y también funciona en un entorno de dominio.,
PsPing
esta utilidad hace ping, comprueba los puertos y realiza pruebas de latencia y ancho de banda. Bastante simple.,
psping <servername>
O usted puede comprobar la conectividad a un puerto al agregar el número de puerto como este:
psping <servername>:80
Hay un montón de opciones avanzadas para este comando que es probable que desee para comprobar a cabo en caso de ned a hacer algunos problemas de red.,
PsService
Esta utilidad le permite tratar con los servicios de Windows desde el símbolo del sistema. Es realmente muy fácil de usar — la sintaxis funciona como esto:
psservice \\computername <comando> <argumentos>
La lista de comandos se pueden encontrar buscando en la ayuda /? opciones, pero hay algunas opciones que te encontrarás usando más que el resto.,ies the configuration
en particular, las opciones start | stop | pause | restart | cont son realmente simples y fáciles de entender., Por ejemplo, en el siguiente comando puede reemplazar «start» con cualquiera de esos otros comandos.
psservice \\computername inicio <servicename>
El resto de opciones pueden utilizarse para consultar más información acerca de un servicio, o cambiar la configuración.
Nota: El sc incorporado.la utilidad exe tiene un montón de características útiles que se superponen con esta utilidad. La principal diferencia es que PsService es un poco más fácil de usar.,
PsShutdown
Esta utilidad le permite apagar, cerrar sesión o incluso poner un equipo en modo de suspensión. El problema es que no es mejor que el apagado incorporado.utilidad exe, y en realidad fue diseñado para Windows XP, por lo que se recomienda utilizar la utilidad incorporada en su lugar en la mayoría de los casos.
La única opción que PsShutdown proporciona que no puede obtener de otra manera es el interruptor (-d) para poner el equipo en modo de suspensión, que puede ser útil.,
psshutdown \\computername -d
también puede utilizar la opción-h para poner el equipo en modo de hibernación en lugar.
PsSuspend
Esta utilidad es muy similar a PsKill, pero hace algo que la utilidad Taskkill incorporada simplemente no puede: puede suspender procesos en lugar de matarlos, lo que puede ser muy útil si desea detener temporalmente un proceso que consume mucha CPU mientras completa una tarea de sysadmin.,
suspender un proceso es extremadamente fácil:
pssuspend \\computer <PID or Name>
y reanudar ese proceso es igual de fácil — todo lo que tiene que hacer es agregar el interruptor-R.,
pssuspend \\computer-R <PID or Name>
cuando las utilidades no se conectan debido al registro remoto
algunas de estas utilidades, incluidas psinfo, pslist, psloglist y psloggedon, requieren que el servicio de registro remoto esté habilitado en el equipo remoto, y no está habilitado de forma predeterminada en las versiones modernas de Windows.
la buena noticia es que este problema es fácilmente solucionable, y no tiene que dejar el Registro remoto habilitado., Simplemente ejecute este comando usando PsService para iniciar el servicio:
psservice \\computername start RemoteRegistry
y luego cuando haya terminado con lo que esté haciendo con PsInfo o PsList, puede detener el servicio nuevamente usando este comando:
psservice \\ComputerName stop remoteregistry
las soluciones simples son las mejores, ¿no?
próxima lección
asegúrese de unirse a nosotros mañana, cuando cubramos las utilidades de archivos y discos, y algunas cosas más interesantes.