Anda di halaman 1dari 9

Manual bsico de PsTools Wes Miller Descargar el cdigo de este artculo: MillerTheDesktopFiles2007_03.

exe (150KB) Hasta el ao pasado, trabajaba en Winternals Software, que fue adquirido por Microsoft en julio de 2006. Winternals se dedicaba a la venta de software comercial, pero los fundadores de la compaa, Mark Russinovich y Bryce Cogswell, tambin eran propietarios de una compaa independiente llamada Sysinternals, que distribua muchas herramientas, como software gratuito. Algunas de estas aplicaciones de software gratuito incluso han evolucionado hasta llegar a ser componentes del pack del administrador de Winternals. Mark y Bryce tambin vendieron la licencia de estas herramientas a compaas que buscaban utilizarlas fuera de los trminos de licencia tpicos de software gratuito. Una de mis herramientas favoritas de la biblioteca de Sysinternals (de acuerdo, es una cantidad ingente de herramientas) es la serie PsTools, que se encuentra ahora en microsoft.com/technet/sysinternals/utilities/pstools.mspx. Mark asign un nombre a las herramientas basado en la utilidad de lista de procesos de UNIX, ps. Como se ha mencionado en el sitio de descarga de las herramientas, existen utilidades de lnea de comandos de Windows que pueden realizar algunas de las mismas funciones que estas herramientas. Sin embargo, adems de una funcionalidad nica considerable, una diferencia principal es que la serie PsTools se puede utilizar de forma local o remota (siempre y cuando los sistemas remotos estn configurados correctamente, por supuesto). An mejor, el proceso para ejecutarlos de forma remota es casi tan sencillo como ejecutarlos de forma local. La serie PsTools incluye varias aplicaciones individuales, incluidas en la figura 1. Al igual que ocurre con el resto de las utilidades de Sysinternals, no hay instalador, slo aplicaciones. Slo tiene que colocarlas en una carpeta de su ruta de acceso y adelante! Figure 1 Utilidades de PsTools Herramienta Descripcin PsExec Permite ejecutar procesos en cualquier contexto de usuario. PsFile Muestra los archivos abiertos de forma remota en un sistema. PsGetSid Muestra el identificador de seguridad (SID) de Windows de un equipo o un usuario. PsInfo Muestra informacin acerca de un sistema de Windows. PsKill Elimina los procesos por nombre o identificador. PsList Muestra informacin detallada acerca de procesos en ejecucin. PsLoggedOn Muestra todos los usuarios que han iniciado la sesin de forma local, as como todos los usuarios de recursos compartidos remotos. PsLogList Vuelca los registros de eventos de Windows. PsPasswd Cambia las contraseas de cuentas de usuario. PsService Consulta y controla los servicios de Windows. PsShutdown Apaga, reinicia o suspende un equipo, o lo coloca en modo de hibernacin. PsSuspend Suspende procesos en ejecucin. Ahora, es posible que note que parte de esta funcionalidad (sobre todo PsLogList) se podra conseguir a travs de Windows Management Instrumentation (WMI) y algunas secuencias de

comandos complejas. Sin embargo, la clave de la serie PsTools es que cada utilidad se dise para llevar a cabo una tarea particular de forma muy simple. Voy a guiarle por todas las herramientas y le dar ejemplos sencillos de por qu y cmo podra utilizarlas. Pero primero, ofrecer una breve introduccin acerca de cmo funcionan las herramientas y qu tipo de requisitos previos debe cumplir para que funcionen. Cmo funcionan las herramientas? Todas las herramientas suelen funcionar de la misma manera. En el sistema de host, inicie la PsTool deseada. Aunque muchas se pueden ejecutar de forma local, comprobar que estas herramientas suelen ofrecer su mayor utilidad al ejecutarse en un sistema remoto o en varios sistemas a la vez. PsExec es una excepcin especfica que viene al caso, como podr ver en el ejemplo que aparece a continuacin. Mediante el argumento de lnea de comandos que proporciona, la utilidad se copia en el recurso compartido administrativo del sistema remoto, que es el mismo que %SystemRoot% (directorio de Windows) en el sistema remoto. Una vez copiada en el directorio remoto, la aplicacin se inicia e instala un servicio de Windows. Este servicio de Windows realiza la tarea que haya solicitado, con las credenciales que proporcion en el momento del inicio. Si la herramienta especfica requiere una interfaz de usuario final en el sistema cliente, este servicio inicia un binario adicional en el contexto de usuario. Recuerde que los servicios no pueden iniciar interfaces de usuario interactivas y directas. El servicio comunica la informacin necesaria a la consola que lo haya iniciado. Y, por ltimo, el servicio se desinstala solo. Como puede ver, las herramientas son eficaces e independientes. Aunque implican mltiples binarios y procesos, el usuario no tiene que preocuparse: slo tiene que ejecutar la herramienta deseada y funcionar. Para utilizar las herramientas, debe cumplir los requisitos previos siguientes: Windows NT, Windows 2000, Windows XP o Windows Server 2003 (es compatible con las versiones x86 o x64 de Windows, aunque no con las versiones de Itanium), el recurso compartido de red administrativo predeterminado y habilitado en el sistema remoto en el que se ejecutan las herramientas (admin$), y los puertos del recurso compartido de impresoras y archivos del sistema remoto (tanto si utiliza el Firewall de Windows, el Servidor de seguridad de conexin a Internet o algn otro producto similar). PsExec Probablemente PsExec sea mi herramienta favorita entre todas (y, probablemente, no por la razn que cabra imaginar). Durante la mayor parte de un perodo de dos aos, no he ejecutado mis sistemas como administrador, sino como usuario. Tengo una breve secuencia de comandos denominada run.vbs que utilizo para ejecutar mis aplicaciones como Administrador local (se pueden ejecutar igual de fcil como cualquier usuario). En la figura 2 se muestra el contenido de la secuencia de comandos (que tambin est disponible en el sitio TechNet Magazine en technetmagazine.com/code07.aspx). La secuencia de comandos da por supuesto que PsTools se encuentra en la variable de sistema de la ruta de acceso. Figure 2 Run.vbs
SET WshShell = WScript.CreateObject("WScript.Shell") SET WshSysEnv = WshShell.Environment("SYSTEM") SET FSO = CreateObject("Scripting.FileSystemObject") IF WScript.Arguments.Count <> 0 Then FOR EACH arg IN WScript.Arguments iArgCount = iArgCount + 1 strCmdArg = (arg)

strCmdArray = Split(strCmdArg, " ", 2, 1) IF iArgCount = 1 THEN strExe = strCmdArray(0) ELSEIF iArgCount = 2 THEN strRun = strCmdArray(0) ELSE strParams = strParams&" "&strCmdArray(0) END IF NEXT END IF '/t:0A && title ***** Admin ***** strExt = LCase(Right(strExe, 3)) IF strExt <> "exe" AND strExt <> "bat" AND strExt <> "cmd" THEN WshShell.Run "psexec.exe -d -i -e -u COMPUTERNAME\USER -p PASSWORD cmd /c start "&strExe&" "&strRun&" "&strParams, 0, FALSE ELSE WshShell.Run "psexec.exe -d -i -e -u COMPUTERNAME\USER -p PASSWORD "&strExe&" "&strRun&" "&strParams, 0, FALSE END IF SET WshShell = NOTHING SET WshSysEnv = NOTHING SET FSO = NOTHING

Esta secuencia de comandos sencilla es un ejemplo de uso de PsExec con la funcionalidad que Mark agreg cuando trabajbamos en los productos de administracin de proteccin en Winternals: la capacidad para un usuario limitado de ofrecer credenciales con ms privilegios para iniciar PsExec de forma local. El uso ms comn de PsExec, por supuesto, es ejecutarla de forma remota, por ejemplo, para ejecutar una utilidad que no ofrece su propio marco de automatizacin, de secuencias de comandos o de capacidad remota. Algunas caractersticas clave de PsExec incluyen la posibilidad de copiar un binario en sistemas remotos para que se ejecute y la capacidad de dictar la afinidad de procesadores. Otra caracterstica prctica de PsExec es la capacidad de redactar su secuencia de comandos en muchos equipos simultneamente mediante un archivo de secuencia de comandos. A continuacin incluimos el uso simplificado de PsExec:
PsExec \\computer -u username -p password command

Puede ampliarlo mediante los conmutadores que se muestran en la figura 3. Figure 3 Conmutadores de PsExec Conmutador Descripcin -a Especifica la afinidad de procesadores. -c Indica si la aplicacin se debe copiar en el sistema remoto. -d Especifica que no se espere a que acabe el proceso antes de salir (no esperar un mensaje de xito o de error). -e La carga se realiza mediante el perfil de la cuenta especificada. -f Copia la aplicacin aunque exista en el sistema remoto. Garantiza que est ejecutando la versin actual (o una especfica). -i Ejecuta la aplicacin interactivamente en el sistema remoto (necesario si desea que un usuario final vea cualquier interfaz de usuario de la aplicacin).

-l

-n -priority

-s -v -x @file

Ejecuta la aplicacin como usuario limitado. Elimina el token del grupo de administradores y recorta los privilegios de procesos al nivel en que estaran para un miembro del grupo de usuarios. Prctico para ejecutar aplicaciones de alto riesgo de cara a Internet con privilegios mnimos. Especifica el tiempo de espera necesario antes de que se produzca un error en la conexin con los equipos remotos. Ejecuta el proceso con la prioridad especificada. Es decir, especifica cmo debe definir Windows la prioridad de proceso para una tarea determinada (-low, -belownormal, abovenormal, -high o -realtime). Ejecuta el proceso con la cuenta del sistema (prctico para ejecutar Regedit y tener acceso a las claves del Registro con privilegios). Copia la aplicacin slo si la que se est copiando es ms reciente. Muestra la interfaz de usuario en el escritorio seguro de Winlogon. Slo funciona en el sistema local. Ejecuta el comando en todos los equipos especificados en el archivo de texto.

PsFile PsFile es una herramienta ms especializada que PsExec. Especficamente, se utiliza para comprobar qu archivos estn abiertos, y por quin, en el sistema remoto. Esto puede ser til si quiere realizar un seguimiento de los archivos que estn abiertos antes de reiniciar un servidor. Si necesita averiguar qu usuario ha bloqueado el archivo, de forma que impide la edicin o la eliminacin, puede enviar una notificacin de forma manual o cerrar el archivo mediante PsFile. El uso de PsFile se incluye a continuacin:
PsFile \\computer -u username -p password

Esto devuelve simplemente una lista de los controladores de archivos abiertos en el sistema remoto. Ms all del uso estndar, tambin puede agregar un parmetro de identificacin a la instruccin, y especificar el nombre del archivo acerca del que desea encontrar informacin o que desea cerrar. Tambin puede incluir el conmutador -c, que cierra el archivo que ha identificado con el parmetro de identificacin. PsGetSid PsGetSid tambin es una herramienta muy especializada. Le indicar el identificador de seguridad (SID) de un equipo, un usuario o un grupo. Esto puede ser til si desea asegurarse de que los sistemas de su dominio no tengan SID duplicados o si desea comprobar los SID de todos los usuarios o los grupos de un sistema. El uso de PsGetSid es del siguiente modo:
PsGetSid \\computer -u username -p password account

Fjese que la cuenta puede especificar un usuario, un equipo o un grupo. Si bien la sintaxis de PSGetSid es sencilla, tambin hay un par de parmetros adicionales disponibles. El parmetro SID especifica la cuenta (el grupo o el equipo) con un SID determinado, y @file ejecuta el comando en todos los equipos enumerados en el archivo de texto especificado. PsInfo PsInfo se usa para ofrecer informacin detallada del sistema. Obviamente, esto resulta particularmente til cuando la secuencia de comandos se aplica a mltiples sistemas remotos, con el envo del resultado a un archivo (por ejemplo, un archivo de Excel y un archivo CSV compatible con bases de datos). Tenga en cuenta que esta utilidad se basa en un importante concepto que es

diferente en la mayor parte del resto de las herramientas: si no proporciona un nombre de equipo, PsInfo intentar, de forma predeterminada, consultar todos los equipos del dominio. El uso de PsInfo es del siguiente modo:
PsInfo \\computer -u username -p password

Aunque la sintaxis es sencilla, hay disponibles parmetros y conmutadores adicionales, como se muestra en la figura 4. Figure 4 Conmutadores de PsInfo Conmutador Descripcin -h Muestra todas las actualizaciones de Windows. -s Muestra todas las aplicaciones instaladas en el sistema. -d Muestra la informacin de disco/volumen del sistema. -c Ofrece los resultados en formato CSV. -t Especifica otro delimitador para el archivo CSV distinto al valor predeterminado de \t. Filter Muestra slo los datos que coinciden con un filtro determinado. @file Ejecuta el comando en todos los equipos incluidos en el archivo de texto especificado. PsKill PsKill es una gran utilidad para terminar procesos en un sistema local o remoto. Su uso es muy sencillo, y permite eliminar rpidamente un proceso junto con todos sus procesos secundarios. El uso de PsKill se parece bastante a las otras herramientas que he analizado:
PsKill -t \\computer -u username -p password process id | process name

Tenga en cuenta que puede especificar el identificador o el nombre del proceso que desea eliminar. PsList No utilizo PsList mucho porque soy ms bien un fan de Process Explorer (consulte microsoft.com/technet/sysinternals/ProcessesAndThreads/ProcessExplorer.mspx para obtener ms informacin). Sin embargo, dado que no existe una versin remota de Process Explorer, PsList pasa a ser un smil razonable de algunas de las funcionalidades clave que proporciona Process Explorer. De hecho, PsList es una lista remota de uno o ms procesos que se ejecutan en un sistema remoto. El uso de PsList es bastante sencillo:
PsList \\computer -u username -p password account

Al igual que ocurre con las otras herramientas, el parmetro de cuenta puede especificar un usuario, un equipo o un grupo. Los parmetros adicionales se muestran en la figura 5. Figure 5 Conmutadores de PsList Conmutador Descripcin -t Muestra informacin al nivel de subproceso. -m Ofrece informacin de memoria detallada de cada proceso. -x Muestra la informacin de procesos, memoria y subprocesos. -t Muestra la informacin en forma de rbol de procesos (como la vista de rbol de Process Explorer). Se ejecuta en modo de administrador de tareas durante un nmero determinado de -s [n] segundos. Esto permite una visualizacin en tiempo real (relativamente) de la informacin de procesos remotos.

Especifica la frecuencia (en segundos) de actualizacin en modo de administrador de tareas. name Muestra informacin acerca de los procesos que empiezan con el nombre especificado. -e Coincide con el nombre de proceso exactamente. pid Muestra informacin acerca de un proceso especfico. PsList es eficaz y, al mismo tiempo, fcil de utilizar (y, sin necesidad de usar el Escritorio remoto, permite ver los procesos remotos con gran detalle). Con esta informacin, podra seguir adelante con PsKill o PsSuspend si, por ejemplo, tuviera un proceso que deba contenerse. PsLoggedOn La premisa subyacente de PsLoggedOn no necesita explicacin. La utilidad muestra quin ha iniciado sesin en el sistema. Puede tratarse de inicios de sesin locales (interactivos) o de recurso compartido de red. De forma parecida a PsFile, esta capacidad puede ser til para determinar quin est usando un servidor en el que puede que tenga que realizar cierto mantenimiento. Su uso es muy sencillo:
PsLoggedOn \\computer

-r [n]

PsLoggedOn tiene slo dos parmetros opcionales: -l slo muestra los inicios de sesin locales (no los de red) y -x excluye la hora de inicio de sesin. Aunque se trata de una herramienta bsica, PsLoggedOn permite consultar fcilmente informacin que, por lo general, tendra que buscar en un par de ubicaciones de Windows. PsLogList PsLogList es una de las utilidades ms prcticas que sirve para volcar los registros de eventos de Windows en un formato de texto que, a continuacin, pueden utilizar los lectores de registro, las bases de datos o cualquier utilidad que desee. La ventaja principal es que convierte las entradas de registros de eventos de su formato binario en algo que se puede transformar o automatizar fcilmente. Por supuesto, en Windows Vista, los registros de eventos estn disponibles originalmente como XML, aunque eso es otra historia. El uso de PsLogList es del siguiente modo:
PsLogList \\computer -u username -p password

Hay varios conmutadores y parmetros adicionales disponibles, como se muestra en la figura 6. Figure 6 Conmutadores de PsLogList Conmutador Descripcin -a Vuelca slo los eventos posteriores a la fecha especificada. -b Vuelca slo los eventos anteriores a la fecha especificada. -c Limpia el registro de eventos permanentemente despus de volcar los resultados deseados. -d Muestra nicamente la informacin de un nmero especificado de das. -e Excluye los eventos con el identificador de evento especificado (se pueden especificar hasta 10). -f Filtra tipos de eventos (advertencia, error, etctera). -g Exporta el registro de eventos como archivo EVT. Requiere el conmutador -c. -h Muestra nicamente la informacin de un nmero especificado de horas.

-l -m -n -o

Vuelca informacin desde el archivo EVT especificado. Muestra nicamente la informacin de un nmero especificado de minutos. Muestra nicamente el nmero especificado de eventos ms recientes. Muestra nicamente los eventos de un origen determinado (o -SRService en el caso del servicio de restauracin del sistema de Windows, por ejemplo). -q Excluye los eventos de un origen determinado (al contrario que -o). -r Invierte el orden: vuelca los eventos de registros de menos reciente a ms reciente. -s Enumera los registros de cada lnea en campos delimitados. -t Especifica un delimitador distinto de la coma para el resultado de de -s. -w Espera a que se rellenen los eventos nuevos y los vuelca en tiempo real. Esto slo se aplica en el sistema local. -x Vuelca los datos extendidos de los registros de eventos. eventlog Especifica cul es el registro de evento que se va a volcar. System es el valor predeterminado. @file Ejecuta el comando en todos los equipos especificados en el archivo de texto. Los registros de eventos de Windows pueden ser una herramienta de diagnstico increblemente eficaz, pero el truco es obtener los datos hasta el punto de poder manipularlos o consolidarlos. PsLogList realiza este truco. PsPasswd PsPasswd es una utilidad sencilla, aunque eficaz, diseada con parte de la misma funcionalidad que Net.exe, pero que incluye adems el aspecto remoto y automtico.

PsPasswd \\computer -u username -p password Username Newpassword

Puede especificar un equipo, ningn equipo (el sistema local) o, si especifica el equipo como \\*, ejecutar la utilidad en todos los equipos del dominio actual. PsPasswd tiene slo un parmetro adicional disponible: @file ejecuta el comando en todos los equipos especificados en el archivo de texto. De nuevo, se trata de una utilidad muy bsica que proporciona una eficacia enorme con varios sistemas. PsService PsService permite ver y editar la informacin del Administrador de control de servicios (SCM) en uno o ms sistemas de la red, e incluso puede buscar un nombre de servicio determinado en los sistemas de su red.
PsService \\computer -u username -p password command options

Al ejecutar PsService, el comando representa uno de los comandos enumerados en la figura 7, y las opciones especifican el atributo que se va a aplicar a un comando dado. Si no se proporciona ningn conmutador de comando adicional, PsService ofrecer un volcado completo de informacin de SCM. Figure 7 Comandos de PsService Comando Descripcin query Consulta un servicio determinado. config Consulta la informacin de configuracin de un servicio determinado. setconfig Establece la informacin de configuracin de un servicio determinado.

start Inicia un servicio. stop Detiene un servicio. restart Reinicia (detiene e inicia) un servicio. pause Interrumpe un servicio. cont Reanuda un servicio interrumpido. depend Muestra qu servicios dependen del servicio determinado. find Busca en la red una sesin determinada del servicio. security Ofrece informacin de seguridad de un servicio determinado. De este modo, puede pensar en PsService como una versin de lnea de comandos eficaz y remota de Services.msc, pero una que, adems, permite buscar servicios (tal vez peligrosos) en toda la red y definir informacin de configuracin. PsShutdown PsShutdown es otra de mis herramientas favoritas. Aunque algunos podran decir que Microsoft ya incluye una herramienta que se hace cargo de esta tarea (shutdown.exe), realmente no es lo mismo. La diferencia clave est en la eficacia de PsShutdown: a saber, poder apagar o reiniciar un sistema remoto. Adems, tiene la capacidad de poner un sistema en modo de espera o hibernacin (no slo en modo de apagado o de reinicio), bloquear un sistema y reiniciar un equipo despus de mostrar un mensaje al usuario durante un perodo determinado de tiempo.
PsShutdown \\computer -u username -p password

Tambin hay varios parmetros adicionales disponibles para su uso con PsShutdown, como se muestra en la figura 8. Figure 8 Conmutadores de PsShutdown Conmutador Descripcin -a Anula un proceso de apagado en curso iniciado por PsShutdown. -c Permite que un usuario interactivo anule el proceso de apagado. -d Suspende el equipo (modo de espera). Cdigos de motivo del proceso de apagado. Recomiendo la consulta del sitio web de -e Microsoft para obtener ayuda con estos conmutadores, ya que su uso puede generar problemas con PsShutdown y la utilidad shutdown.exe integrada. Consulte msdn2.microsoft.com/en-us/library/aa376885.aspx (en ingls) para obtener ms informacin. -f Fuerza la finalizacin de todas las aplicaciones. -h Coloca el equipo en modo de hibernacin. -k Desconecta el equipo (lo reinicia si no se admite la desconexin). -l Bloquea el equipo. -m Especifica el mensaje que se mostrar a los usuarios interactivos. -n Especifica el tiempo de espera necesario antes de que se produzca un error en la conexin con los equipos remotos. -o Cierra la sesin del usuario de la consola. -r Reinicia el equipo. -s Apaga el equipo, pero no lo desconecta.

-t

El tiempo que debe transcurrir antes de ejecutar el comando de apagado o el tiempo concreto para la desconexin. -v Muestra el mensaje para los usuarios hasta que se produce el apagado. @file Ejecuta el comando en todos los equipos especificados en el archivo de texto. Puede comprobar que PsShutdown es una utilidad de control de potencia del sistema muy eficaz y altamente configurable y que, adems, es relativamente fcil de usar. PsSuspend PsSuspend es una prctica utilidad si desea poner un proceso invasor bajo control de forma temporal o si simplemente desea reducir temporalmente un proceso de uso de CPU elevado sin perder ningn dato o contexto de aplicacin.

PsSuspend \\computer -u username -p password process ID

Puede obtener el identificador de proceso con PsList. Una vez suspendido un proceso, puede utilizar el conmutador -r para reanudarlo. Tenga en cuenta que el concepto de suspensin y reanudacin de un proceso lo implementa tambin Process Explorer, aunque slo de forma local. Obviamente, PsSuspend puede suspender y reanudar los procesos de forma remota y local, lo que supera la implementacin integrada en Process Explorer. Conclusin Creo que la serie PsTools es un conjunto de utilidades de valor incalculable. Junto con el resto de utilidades de Sysinternals (a saber, Regmon, Filemon, Process Explorer y, ahora, Process Monitor), PsTools se encuentra entre los primeros programas que pongo en mi ruta de acceso al reinstalar Windows en cualquiera de mis sistemas. Espero que esta columna le familiarice con la serie PsTools si no la conoca de antes o, en este caso, espero que haya ampliado sus conocimientos sobre estas herramientas. Mi agradecimiento especial a Mark Russinovich, por supuesto, por ofrecer estas herramientas de forma gratuita todos estos aos y ayudarme con el contenido de esta columna. Wes Miller es Director de desarrollo de Pluck (www.pluck.com) en Austin, Texas. Anteriormente, Wes trabaj en Winternals Software en Austin, y en Microsoft como administrador de programas y administrador de producto para Windows. Si lo desea, puede ponerse en contacto con Wes en la direccin technet@getwired.com. 2008 Microsoft Corporation and CMP Media, LLC. Reservados todos los derechos; queda prohibida la reproduccin parcial o total sin previa autorizacin.