Manual básico de PsTools.pdf
-
Upload
caizquierdo -
Category
Documents
-
view
301 -
download
13
Transcript of Manual básico de PsTools.pdf
Manual básico de PsTools
Wes Miller
Descargar el código de este artículo: MillerTheDesktopFiles2007_03.exe (150KB)
Hasta el año 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
compañía, Mark Russinovich y Bryce Cogswell, también eran propietarios de una compañía
independiente llamada Sysinternals, que distribuía 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 también vendieron la licencia de estas herramientas a compañías que buscaban utilizarlas
fuera de los términos de licencia típicos 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 línea de comandos de Windows® que
pueden realizar algunas de las mismas funciones que estas herramientas. Sin embargo, además 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 estén configurados
correctamente, por supuesto). Aún 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, sólo aplicaciones. ¡Sólo tiene que
colocarlas en una carpeta de su ruta de acceso y adelante!
Figure 1 Utilidades de PsTools
Herramienta Descripción
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 información acerca de un sistema de Windows.
PsKill Elimina los procesos por nombre o identificador.
PsList Muestra información detallada acerca de procesos en ejecución.
PsLoggedOn Muestra todos los usuarios que han iniciado la sesión de forma local, así como todos
los usuarios de recursos compartidos remotos.
PsLogList Vuelca los registros de eventos de Windows.
PsPasswd Cambia las contraseñas 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 hibernación.
PsSuspend Suspende procesos en ejecución.
Ahora, es posible que note que parte de esta funcionalidad (sobre todo PsLogList) se podría
conseguir a través 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 cómo podría
utilizarlas. Pero primero, ofreceré una breve introducción acerca de cómo funcionan las
herramientas y qué tipo de requisitos previos debe cumplir para que funcionen.
¿Cómo 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 excepción específica que viene al caso, como podrá ver en el ejemplo que aparece a
continuación. Mediante el argumento de línea 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 aplicación 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 específica 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
información 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 múltiples
binarios y procesos, el usuario no tiene que preocuparse: sólo 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 conexión a Internet o algún otro producto
similar).
PsExec
Probablemente PsExec sea mi herramienta favorita entre todas (y, probablemente, no por la razón
que cabría imaginar). Durante la mayor parte de un período de dos años, 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 fácil como cualquier usuario). En la figura 2 se muestra el contenido de la
secuencia de comandos (que también 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 trabajábamos en los productos de administración de protección en Winternals: la
capacidad para un usuario limitado de ofrecer credenciales con más privilegios para iniciar PsExec
de forma local. El uso más común de PsExec, por supuesto, es ejecutarla de forma remota, por
ejemplo, para ejecutar una utilidad que no ofrece su propio marco de automatización, de
secuencias de comandos o de capacidad remota. Algunas características 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 característica práctica de PsExec es la capacidad de redactar su
secuencia de comandos en muchos equipos simultáneamente mediante un archivo de secuencia de
comandos.
A continuación 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 Descripción
-a Especifica la afinidad de procesadores.
-c Indica si la aplicación 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 aplicación aunque exista en el sistema remoto. Garantiza que está ejecutando
la versión actual (o una específica).
-i Ejecuta la aplicación interactivamente en el sistema remoto (necesario si desea que un
usuario final vea cualquier interfaz de usuario de la aplicación).
-l Ejecuta la aplicación como usuario limitado. Elimina el token del grupo de
administradores y recorta los privilegios de procesos al nivel en que estarían para un
miembro del grupo de usuarios. Práctico para ejecutar aplicaciones de alto riesgo de
cara a Internet con privilegios mínimos.
-n Especifica el tiempo de espera necesario antes de que se produzca un error en la
conexión con los equipos remotos.
-priority Ejecuta el proceso con la prioridad especificada. Es decir, especifica cómo debe definir
Windows la prioridad de proceso para una tarea determinada (-low, -belownormal, -
abovenormal, -high o -realtime).
-s Ejecuta el proceso con la cuenta del sistema (práctico para ejecutar Regedit y tener
acceso a las claves del Registro con privilegios).
-v Copia la aplicación sólo si la que se está copiando es más reciente.
-x Muestra la interfaz de usuario en el escritorio seguro de Winlogon. Sólo funciona en el
sistema local.
@file Ejecuta el comando en todos los equipos especificados en el archivo de texto.
PsFile
PsFile es una herramienta más especializada que PsExec. Específicamente, se utiliza para
comprobar qué archivos están abiertos, y por quién, en el sistema remoto. Esto puede ser útil si
quiere realizar un seguimiento de los archivos que están abiertos antes de reiniciar un servidor. Si
necesita averiguar qué usuario ha bloqueado el archivo, de forma que impide la edición o la
eliminación, puede enviar una notificación de forma manual o cerrar el archivo mediante PsFile. El
uso de PsFile se incluye a continuación: PsFile \\computer -u username -p password
Esto devuelve simplemente una lista de los controladores de archivos abiertos en el sistema
remoto. Más allá del uso estándar, también puede agregar un parámetro de identificación a la
instrucción, y especificar el nombre del archivo acerca del que desea encontrar información o que
desea cerrar. También puede incluir el conmutador -c, que cierra el archivo que ha identificado con
el parámetro de identificación.
PsGetSid
PsGetSid también 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
Fíjese que la cuenta puede especificar un usuario, un equipo o un grupo. Si bien la sintaxis de
PSGetSid es sencilla, también hay un par de parámetros adicionales disponibles. El parámetro 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 información detallada del sistema. Obviamente, esto resulta
particularmente útil cuando la secuencia de comandos se aplica a múltiples sistemas remotos, con
el envío 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 parámetros y conmutadores adicionales, como se
muestra en la figura 4.
Figure 4 Conmutadores de PsInfo
Conmutador Descripción
-h Muestra todas las actualizaciones de Windows.
-s Muestra todas las aplicaciones instaladas en el sistema.
-d Muestra la información 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 sólo 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 rápidamente 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 más bien un fan de Process Explorer (consulte
microsoft.com/technet/sysinternals/ProcessesAndThreads/ProcessExplorer.mspx para obtener más
información). Sin embargo, dado que no existe una versión remota de Process Explorer, PsList pasa
a ser un símil razonable de algunas de las funcionalidades clave que proporciona Process Explorer.
De hecho, PsList es una lista remota de uno o más 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 parámetro de cuenta puede especificar un
usuario, un equipo o un grupo. Los parámetros adicionales se muestran en la figura 5.
Figure 5 Conmutadores de PsList
Conmutador Descripción
-t Muestra información al nivel de subproceso.
-m Ofrece información de memoria detallada de cada proceso.
-x Muestra la información de procesos, memoria y subprocesos.
-t Muestra la información en forma de árbol de procesos (como la vista de árbol de
Process Explorer).
-s [n] Se ejecuta en modo de administrador de tareas durante un número determinado de
segundos. Esto permite una visualización en tiempo real (relativamente) de la
información de procesos remotos.
-r [n] Especifica la frecuencia (en segundos) de actualización en modo de administrador de
tareas.
name Muestra información acerca de los procesos que empiezan con el nombre
especificado.
-e Coincide con el nombre de proceso exactamente.
pid Muestra información acerca de un proceso específico.
PsList es eficaz y, al mismo tiempo, fácil de utilizar (y, sin necesidad de usar el Escritorio remoto,
permite ver los procesos remotos con gran detalle). Con esta información, podría seguir adelante
con PsKill o PsSuspend si, por ejemplo, tuviera un proceso que deba contenerse.
PsLoggedOn
La premisa subyacente de PsLoggedOn no necesita explicación. La utilidad muestra quién ha
iniciado sesión en el sistema. Puede tratarse de inicios de sesión locales (interactivos) o de recurso
compartido de red. De forma parecida a PsFile, esta capacidad puede ser útil para determinar quién
está usando un servidor en el que puede que tenga que realizar cierto mantenimiento. Su uso es
muy sencillo: PsLoggedOn \\computer
PsLoggedOn tiene sólo dos parámetros opcionales: -l sólo muestra los inicios de sesión locales (no
los de red) y -x excluye la hora de inicio de sesión.
Aunque se trata de una herramienta básica, PsLoggedOn permite consultar fácilmente información
que, por lo general, tendría que buscar en un par de ubicaciones de Windows.
PsLogList
PsLogList es una de las utilidades más prácticas que sirve para volcar los registros de eventos de
Windows en un formato de texto que, a continuación, 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
fácilmente. Por supuesto, en Windows Vista™, los registros de eventos están 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 parámetros adicionales disponibles, como se muestra en la figura 6.
Figure 6 Conmutadores de PsLogList
Conmutador Descripción
-a Vuelca sólo los eventos posteriores a la fecha especificada.
-b Vuelca sólo los eventos anteriores a la fecha especificada.
-c Limpia el registro de eventos permanentemente después de volcar los resultados
deseados.
-d Muestra únicamente la información de un número especificado de días.
-e Excluye los eventos con el identificador de evento especificado (se pueden especificar
hasta 10).
-f Filtra tipos de eventos (advertencia, error, etcétera).
-g Exporta el registro de eventos como archivo EVT. Requiere el conmutador -c.
-h Muestra únicamente la información de un número especificado de horas.
-l Vuelca información desde el archivo EVT especificado.
-m Muestra únicamente la información de un número especificado de minutos.
-n Muestra únicamente el número especificado de eventos más recientes.
-o Muestra únicamente los eventos de un origen determinado (o -SRService en el caso
del servicio de restauración 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 más reciente.
-s Enumera los registros de cada línea 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 sólo se
aplica en el sistema local.
-x Vuelca los datos extendidos de los registros de eventos.
eventlog Especifica cuál 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 diagnóstico increíblemente
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, diseñada con parte de la misma funcionalidad que
Net.exe, pero que incluye además el aspecto remoto y automático. PsPasswd \\computer -u username -p password Username Newpassword
Puede especificar un equipo, ningún equipo (el sistema local) o, si especifica el equipo como \\*,
ejecutar la utilidad en todos los equipos del dominio actual. PsPasswd tiene sólo un parámetro
adicional disponible: @file ejecuta el comando en todos los equipos especificados en el archivo de
texto. De nuevo, se trata de una utilidad muy básica que proporciona una eficacia enorme con
varios sistemas.
PsService
PsService permite ver y editar la información del Administrador de control de servicios (SCM) en
uno o más 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
ningún conmutador de comando adicional, PsService ofrecerá un volcado completo de información
de SCM.
Figure 7 Comandos de PsService
Comando Descripción
query Consulta un servicio determinado.
config Consulta la información de configuración de un servicio determinado.
setconfig Establece la información de configuración 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 sesión determinada del servicio.
security Ofrece información de seguridad de un servicio determinado.
De este modo, puede pensar en PsService como una versión de línea de comandos eficaz y remota
de Services.msc, pero una que, además, permite buscar servicios (tal vez peligrosos) en toda la red
y definir información de configuración.
PsShutdown
PsShutdown es otra de mis herramientas favoritas. Aunque algunos podrían 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. Además, tiene la capacidad de poner un sistema en modo de espera o hibernación
(no sólo en modo de apagado o de reinicio), bloquear un sistema y reiniciar un equipo después de
mostrar un mensaje al usuario durante un período determinado de tiempo. PsShutdown \\computer -u username -p password
También hay varios parámetros adicionales disponibles para su uso con PsShutdown, como se
muestra en la figura 8.
Figure 8 Conmutadores de PsShutdown
Conmutador Descripción
-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).
-e Códigos de motivo del proceso de apagado. Recomiendo la consulta del sitio web de
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 inglés) para obtener más
información.
-f Fuerza la finalización de todas las aplicaciones.
-h Coloca el equipo en modo de hibernación.
-k Desconecta el equipo (lo reinicia si no se admite la desconexión).
-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
conexión con los equipos remotos.
-o Cierra la sesión 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 desconexión.
-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, además, es relativamente fácil de usar.
PsSuspend
PsSuspend es una práctica 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 ningún dato o contexto de aplicación. 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 suspensión y
reanudación de un proceso lo implementa también Process Explorer, aunque sólo de forma local.
Obviamente, PsSuspend puede suspender y reanudar los procesos de forma remota y local, lo que
supera la implementación integrada en Process Explorer.
Conclusión
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 conocía 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 años 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
dirección [email protected].
© 2008 Microsoft Corporation and CMP Media, LLC. Reservados todos los derechos; queda
prohibida la reproducción parcial o total sin previa autorización.