`

PsTools 入门

 
阅读更多
PsTools 入门  Figure 1 PsTools 实用程序
工具 说明
PsExec 用于在任何用户环境中执行进程。
PsFile 显示系统上远程打开的文件。
PsGetSid 显示计算机或用户的 Windows 安全标识符 (SID)。
PsInfo 列出有关 Windows 系统的信息。
PsKill 按照名称或进程 ID 终止进程。
PsList 列出有关运行中进程的详细信息。
PsLoggedOn 显示所有本地登录的用户以及所有远程资源共享用户。
PsLogList 转储 Windows 事件日志记录。
PsPasswd 更改用户帐户的密码。
PsService 查看和控制 Windows 服务。
PsShutdown 关闭、重新启动、休眠或挂起计算机。
PsSuspend 挂起运行中的进程。
现在,您可能注意到,这一功能的某些环节(特别是 PsLogList)可以通过 Windows Management Instrumentation (WMI) 和一些复杂的脚本来实现。但 PsTools 套件的特点在于,每个实用程序都旨在完成某一项特定的任务,简单而又容易。我将逐个工具加以介绍,并通过简单的示例来说明工具的用途及用法。但首先,我要简要介绍一下这些工具的工作原理以及要使这些工具能够工作必须满足哪些前提条件。
工具的工作原理这些工具通常都以相同的方式工作。在主机系统上启动所需的 PsTool。尽管许多工具都可以在本地运行,但您会发现这些工具在针对一个远程系统运行时或在同时针对多个系统运行时最能发挥其效用。(PsExec 是我所想到的一个特例,在下面的示例中您就会看到。)实用程序使用您所提供的命令行参数,来将其自身复制到远程系统的管理共享,这一管理共享与远程系统上的 %SystemRoot%(Windows 目录)相同。一旦复制到远程目录中,该应用程序即会自行启动并将安装 Windows 服务。该 Windows 服务会使用启动时您所提供的凭据来执行您所请求的任务。如果该特定工具需要客户端系统上的某个最终用户 UI,该服务会在用户上下文中启动附加的二进制文件。(请记住,服务不能抛出直接交互的 UI。)该服务再将任何必要的信息返回给启动它的控制台。最后,该服务会自行卸载。您可以看到,这些工具是强大而独立的。尽管它们会涉及多个二进制文件和多个进程,但作为用户的您却不必担忧,您只需运行所需的工具,它就会完成任务。要使用这些工具,必须满足以下前提条件:具有 Windows NT®、Windows 2000、Windows XP 或 Windows Server® 2003(支持 Windows 的 x86 或 x64 版本,但不支持 Itanium 版本);在运行这些工具的远程系统上启用默认的管理网络共享 (admin$);在远程系统上打开用于文件和打印机共享的端口(无论使用的是 Windows 防火墙、Internet 连接防火墙,还是其他防火墙产品)。
PsExecPsExec 是这些工具中我个人所偏爱的工具,个中原因或许并不是您想象的那样。在两年中,我有大半的时间一直以“非管理员用户”的身份运行我的系统,也就是说,我以“用户”身份而非“管理员”身份运行。而我有一个用来以本地管理员身份运行应用程序的简短脚本,称为 run.vbs(以用户身份也可以同样轻松地运行这些应用程序)。图 2 显示了该脚本的内容(也可在 TechNet 杂志网站的 technetmagazine.com/code07.aspx 获得该脚本)。该脚本假定 PsTools 在 Path 系统变量中。 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
当我们在 Winternals 开发 Protection Manager 产品时,Mark 添加了一个功能:即允许受限用户提供更高权限的凭据来在本地启动 PsExec。这个简单的脚本就是将 PsExec 用于这一功能的一个示例。当然,PsExec 更常用来远程运行,例如用来运行一个不提供自身远程、脚本或自动处理框架的实用程序。PsExec 的两个主要功能包括将所要执行的二进制文件复制到远程系统以及规定处理器关联。PsExec 的另一个有用功能是可以通过提供脚本文件来针对许多计算机同时进行脚本处理。以下是简化的 PsExec 用法: 复制代码PsExec \\computer -u username -p password command
通过图 3 所示的开关可以扩展这一用法。 Figure 3 PsExec 开关
开关 说明
-a 指定处理器关联。
-c 指示是否应将应用程序复制到远程系统。
-d 指定在退出前不等待进程结束(不等待成功或失败的消息)。
-e 使用指定帐户的配置文件加载。
-f 即使远程系统上存在该应用程序也进行复制。确保运行当前(或特定)版本。
-i 在远程系统上以交互方式运行应用程序(如果想要某位最终用户看到该应用程序的任何用户界面,则必须采用这种模式)。
-l 以受限用户身份运行应用程序。删除管理员组令牌并且将进程权限降至用户组成员的权限级别。便于以最低权限运行高风险、面向 Internet 的应用程序。
-n 指定在与远程计算机连接失败之前等待的超时时间。
-priority 按指定的优先级运行进程。即,指定 Windows 应为给定任务所设的进程优先级(-low、-belownormal、-abovenormal、-high 或 –realtime)。
-s 使用系统帐户运行进程(便于运行 Regedit 来访问权限内的注册表项)。
-v 只在所复制应用程序为更高版本时才复制该应用程序。
-x 在 Winlogon 安全桌面上显示 UI(仅适用于本地系统)。
@file 针对文本文件中所指定的所有计算机运行该命令。

PsFile与 PsExec 相比,PsFile 是更加有所侧重的工具。具体来说,它用于检查谁在远程系统上打开了哪些文件。如果要在重新引导服务器前跟踪哪些文件处于打开状态,此工具会很有用。如果需要查明哪位用户锁定了该文件(或许是为防止进行编辑或删除),可以手动进行通知,或者通过 PsFile 将文件关闭。PsFile 的用法如下: 复制代码PsFile \\computer -u username -p password
此命令只会返回远程系统上所打开的文件句柄的列表。除了标准用法之外,还可以向语句中添加 Id 参数,以指定要查找相关信息或者要关闭的文件的名称。其中还可以包括 -c 开关,表示将关闭 Id 参数所标识的文件。
PsGetSidPsGetSid 也是一个很有侧重的工具。它会告诉您计算机、用户或组的安全标识符 (SID)。如果要确保域中的系统不存在重复的 SID 或者只想在某个系统上验证所有用户或组的 SID,此工具会很有用。PsGetSid 的用法如下: 复制代码PsGetSid \\computer -u username -p password account
请注意,account 可以指定用户、计算机或组。尽管 PSGetSid 的语法非常简单,但它仍提供了一些附加的参数。SID 参数用于指定具有指定 SID 的帐户(组或计算机),@file 用于针对指定文本文件中所列的所有计算机运行该命令。
PsInfoPsInfo 用于提供详细的系统信息。显然,这在针对多个远程系统编制脚本时最为有用,其输出内容会发送到某个文件(例如 Excel® 和数据库可以识别的 CSV 文件)。请注意,此实用程序的运行依据一个不同于大多数其他工具的重要概念:在默认情况下,如果不提供计算机名称,PsInfo 会尝试查询域中的所有计算机。PsInfo 的用法如下: 复制代码PsInfo  \\computer -u username -p password
虽然其语法简单,但也提供了几个附加的开关和参数,如图 4 所示 Figure 4 PsInfo 开关
开关 说明
-h 显示所有 Windows 更新。
-s 显示系统上安装的所有应用程序。
-d 显示系统的磁盘/卷信息。
-c 以 CSV 格式输出结果。
-t 为 CSV 文件指定不同于默认值 \t 的分隔符。
Filter 仅显示与给定筛选器匹配的数据。
@file 针对指定文本文件中所列的所有计算机运行该命令。

PsKillPsKill 是用于在本地或远程系统上终止进程的有效实用程序。其用法非常简单,并且可以快速终止某个进程及其所有子进程。PsKill 的用法与上面介绍的其他工具非常类似: 复制代码PsKill -t \\computer -u username -p password process id | process name
请注意,您可以指定要终止的进程 id 或进程名。
PsList我是一个 Process Explorer 迷,所以不大使用 PsList(有关详细信息,请参阅 microsoft.com/technet/sysinternals/ProcessesAndThreads/ProcessExplorer.mspx。)但由于 Process Explorer 没有远程版本,所以 PsList 理所当然成为 Process Explorer 一些主要功能的替代品。实际上,PsList 是在远程系统上运行的一个或多个进程的列表。PsList 的用法相当简单: 复制代码PsList \\computer -u username -p password account
与其他工具一样,account 参数可以指定用户、计算机或组。其他参数如图 5 所示。 Figure 5 PsList 开关
开关 说明
-t 显示线程级别的信息。
-m 提供每个进程的详细内存信息。
-x 显示进程、内存和线程信息。
-t 按进程树显示信息(考虑 Process Explorer 树视图)。
-s [n] 在指定的秒数内,以任务管理器模式运行。这样可以相对实时地显示远程进程信息。
-r [n] 指定在以任务管理器模式运行时的刷新频率(以秒计)。
name 显示以指定名称开始的进程的相关信息。
-e 与进程名称完全匹配。
pid 显示特定进程的相关信息。
PsList 功能强大且简单易用,您无需使用远程桌面即可相当详细地查看远程进程。在需要(例如您有必须进行控制的进程)时,可以利用此信息移到 PsKill 或 PsSuspend。
PsLoggedOnPsLoggedOn 背后的前提假定是不言自明的。它用于显示登录到系统中的用户。这可以是本地(交互式)登录或网络共享登录。与 PsFile 相似,此功能对于确定谁在使用您所需要维护的服务器是很有用的。其用法很简单: 复制代码PsLoggedOn \\computer
PsLoggedOn 只有两个可选参数:-l 只显示本地登录(而不包括网络登录),-x 不包括登录时间。PsLoggedOn 尽管是一个基础性的工具,但它允许您轻松地查看到通常必须要通过搜索几个 Windows 位置才能获得的信息。
PsLogList作为最常用的实用程序之一,PsLogList 工具用于将 Windows 事件日志转储为文本格式,这些转储的日志进而再用于日志读取器、数据库或其他任何需要的地方。其主要的优点是将事件日志项从二进制格式转换为易于转换或自动处理的格式。(当然,在 Windows Vista™ 中,事件日志原本就有 XML 格式,但那不是我们今天要谈的话题。)PsLogList 的用法: 复制代码PsLogList \\computer -u username -p password
此实用程序还提供了许多附加的开关和参数,如图 6 所示。 Figure 6 PsLogList 开关
开关 说明
-a 仅转储所指定日期之后的事件。
-b 仅转储所指定日期之前的事件。
-c 在转储所需输出后永久清除事件日志。
-d 仅显示指定天数内的信息。
-e 排除具有指定事件 ID 的事件(最多可指定 10 个事件 ID)。
-f 筛选事件类型(警告、错误等)。
-g 将事件日志导出为 EVT 文件,需要指定 -c 开关。
-h 仅显示指定小时数内的信息。
-l 从指定的 EVT 文件转储。
-m 仅显示指定分钟数内的信息。
-n 仅显示最近的 n 个事件。
-o 仅显示来自给定源的事件(例如,-o SRService 表示显示 Windows System Restore Service 的事件)。
-q 排除来自给定源的事件(与 -o 相反)。
-r 颠倒转储顺序,即按从最早到最近的顺序转储日志事件。
-s 以分隔的字段在每行列出记录。
-t 为 -s 输出内容指定除逗号之外的分隔符。
-w 等待新事件,以实时地填充并转储。这仅适用于本地系统。
-x 从事件日志转储扩展数据。
eventlog 指定要转储的事件日志。System 为默认值。
@file 针对文本文件中所指定的所有计算机运行该命令。
Windows 事件日志可以是一个强大得惊人的诊断工具,但其奥妙在于使数据变得可以操作或合并。PsLogList 就是这神奇的力量。
PsPasswdPsPasswd 是一个简单而又强大的实用程序,其功能在某种程度上与 Net.exe 相同,但它还考虑到了远程可用性和自动化。 复制代码PsPasswd  \\computer -u username -p password Username Newpassword
您可以指定计算机,也可以不指定计算机(针对本地系统运行),如果将计算机指定为 \\*,则实用程序将针对当前域中的所有计算机运行。PsPasswd 只提供了一个附加参数:@file 用于针对文本文件中所指定的所有计算机运行该命令。同样,它也是一个非常基础性的实用程序,却能提供极强大的多系统功能。
PsService通过 PsService,您可以在网络的一个或多个系统上查看和编辑“服务控制管理器”(SCM) 信息,甚至可以在网络的各系统上搜索给定的服务名。 复制代码PsService \\computer -u username -p password command options
运行 PsService 时,command 代表图 7 中所列的任一命令,options 用于指定应用于给定命令的属性。如果不提供附加命令开关,PsService 会完整地转储 SCM 信息。 Figure 7 PsService 命令
命令 说明
query 查询给定的服务。
config 查询给定服务的配置信息。
setconfig 设置给定服务的配置信息。
start 启动服务。
stop 停止服务。
restart 重新启动(停止并启动)服务。
pause 暂停服务。
cont 恢复暂停的服务。
depend 显示哪些服务依赖于给定的服务。
find 在网络中查找服务的给定实例。
security 为给定服务提供安全信息。
因此,您可以将 PsService 视为 Services.msc 功能强大的远程命令行版本,只是它还允许您跨网络查找服务(可能具有潜在的危险)以及设置配置信息。
PsShutdownPsShutdown 是我所喜爱的另一个工具。尽管有人会说 Microsoft 中包含一个用于处理此任务的工具 (shutdown.exe),但它们的确是不同的。两者的主要区别在于 PsShutdown 具有以下功能:它可以关闭或重新启动远程系统。此外,它还可以将系统置为待机或休眠模式(而不仅仅是关闭或重新启动)、锁定系统以及在通过消息提示用户一段给定的时间后重新启动系统。 复制代码PsShutdown \\computer -u username -p password
PsShutdown 也提供了许多附加参数,如图 8 所示。 Figure 8 PsShutdown 开关
开关 说明
-a 中止 PsShutdown 所启动的、已在进行的关机进程。
-c 允许交互式用户中止关机进程。
-d 挂起计算机(待机)。
-e 关机原因代码。建议到 Microsoft 网站查找相关帮助,因为同时使用 PsShutdown 和内置的 shutdown.exe 时可能会发生问题。有关详细信息,请参阅 msdn2.microsoft.com/en-us/library/aa376885.aspx。
-f 强制终止所有运行中的应用程序。
-h 使计算机休眠。
-k 关闭计算机的电源(如果不支持关闭电源,则重新启动计算机)。
-l 锁定计算机。
-m 指定要向任何交互式用户显示的消息。
-n 指定在与远程计算机连接失败之前等待的超时时间。
-o 注销控制台用户。
-r 重新启动计算机。
-s 关机,但不关闭电源。
-t 运行关机命令之前的倒计时时间,或者距关机的具体时间。
-v 在关机前为用户显示消息。
@file 针对文本文件中所指定的所有计算机运行该命令。
您会发现,PsShutdown 是一个非常强大、可配置性强的系统电源控制实用程序,而且使用起来相对比较简单。
PsSuspend如果要暂时控制一个恶意进程,或者只是要在不丢失任何数据或应用程序上下文的情况下暂时中止对 CPU 占用率高的进程,PsSuspend 将不失为一个便利的实用程序。 复制代码PsSuspend \\computer -u username -p password process ID
可以通过 PsList 获得进程 ID。挂起某个进程后,可使用 -r 开关进行恢复。请注意,Process Explorer 也会实现挂起和恢复某个进程的概念,但只是在本地。而 PsSuspend 可以通过远程及本地方式挂起和恢复进程,这显然比 Process Explorer 中内置的实现方式更具优势。

分享到:
评论

相关推荐

    PSTools及使用说明

    PSTools是由微软开发的一套命令行工具,主要用于系统管理和远程操作。这套工具包含了多个实用程序,例如PsExec.exe,PsKill.exe,PsGetSession.exe等,它们在系统管理员进行故障排查、远程控制和自动化任务执行时...

    pstools

    "pstools"是一套由微软开发的系统工具集,它扩展了Windows操作系统的基本功能,尤其在远程管理和系统诊断方面提供了强大的支持。这些工具通常用于管理员进行系统维护、故障排查和安全审计,对于IT专业人士来说是不可...

    PsTools工具用于删除注册表远程主机控制

    **PsTools工具详解** PsTools是由Mark Russinovich开发的一套强大的系统管理工具,它是Sysinternals Suite的一部分,被Microsoft收购后,现在可以在Microsoft官方站点免费下载。PsTools的主要功能包括远程过程调用...

    PsTools win7下清除USB记录的神器

    标题中的“PsTools win7下清除USB记录的神器”指的是在Windows 7操作系统中,使用PsTools工具来清除USB设备的使用记录。PsTools是由Sysinternals开发的一组实用程序,它提供了多种系统管理功能,其中包括远程进程...

    PSTools安全管理工具套件

    PsTools是Sysinternals Suite中一款排名靠前的一个安全管理工具套件。现在被微软收购。目前pstools中含有12款各式各样的小工具。如果将它们灵活的运用,将会在渗透中收到奇效。所有的pstool第一次运行时都会弹框。...

    PSTools工具集.zip

    PSTools工具集是一个专为解决Windows和Mac双系统间蓝牙共享问题而设计的实用工具集。这个压缩包内含的"PSTools"是一系列由Microsoft开发的小型命令行工具,它们提供了对远程和本地Windows系统的强大管理功能,尽管在...

    Windows监测工具PsTools

    【Windows监测工具PsTools】是由SysInternals(后被Microsoft收购)开发的一套实用程序集,主要用于管理和监控Windows操作系统。这些工具提供了丰富的功能,能够帮助IT专业人员深入了解系统的运行状态,进行故障排查...

    PSTools工具

    Download PsTools Suite (1,648 KB) Rate: Introduction The Windows NT and Windows 2000 Resource Kits come with a number of command-line tools that help you administer your Windows NT/2K ...

    pstools 远程管理工具包

    PSTools是由微软开发的一组命令行工具,主要用于远程管理和控制Windows系统。这些工具使得网络管理员可以在不安装额外软件的情况下,执行各种远程操作,极大地提高了工作效率。以下将详细介绍PSTools的主要工具及其...

    PsTools v2.44

    "PsTools v2.44" 是一套由著名系统工程师 Mark Russinovich 开发的实用工具集合,主要用于系统管理和诊断。这个工具集在2007年11月5日发布,是IT专业人士和系统管理员的得力助手,无需过多介绍其在业界的重要地位。 ...

    PSTools -windows提权软件

    PSTools -windows提权软件

    PsTools远程管理工具包

    PsTools是由著名的SysInternals团队开发的一套针对Windows NT/2K及后续系统设计的远程管理系统工具集。这个工具包包含了一系列实用程序,允许管理员在本地或远程计算机上执行各种管理任务,极大地扩展了Windows内置...

    PSTools.zip

    PSTools是由微软开发的一套实用工具集合,主要用于管理和维护Windows服务器系统,尤其在远程操作方面表现出色。这个名为"PSTools.zip"的压缩包包含了多个执行不同功能的命令行工具,它们允许管理员在局域网内的...

    进程分析工具PSTools.zip

    PSTools是由微软提供的一套命令行工具,主要用于系统管理和远程进程分析。这些工具在Windows操作系统环境下极其有用,尤其对于IT专业人士和系统管理员而言,它们是诊断、监控和控制远程及本地系统进程的重要资源。 ...

    PsTools工具.rar

    PsTools是一个功能强大的远程管理工具包,一共由12个命令组成,可以用来远程管理Windows NT/2000/XP系统。该软件在DOS窗口中操作,虽然没有漂亮的图形界面,但是功能却十分强大,使用起来也很简便

    pstools套件在渗透中的应用详解1

    【PSTools套件在渗透中的应用详解】 PSTools是由Sysinternals开发的一系列实用程序,现已被微软收购,成为Windows系统管理工具的重要组成部分。这个套件包含了12个功能各异的小工具,它们在网络安全渗透测试中具有...

    pstools 远程命令执行工具

    简介  实用工具(如 Telnet)和远程控制程序(如 Symantec 的 PC Anywhere)使您可以在远程系统上执行程序,但安装它们非常困难,...这些 PsTools 都不带病毒,但是如果病毒使用了这些工具,则它们可能触发病毒通知。

    PSTools.rar

    PSTools是由微软公司开发的一套实用工具集,主要用于远程管理和控制Windows系统。这个压缩包“PSTools.rar”包含了多个命令行工具,这些工具在系统管理员日常维护、故障排查和自动化任务执行中非常有用。下面我们将...

Global site tag (gtag.js) - Google Analytics