如何使用PsTools工具执行本地/远程PC管理任务
时间:2022-12-02 18:44:11
大多数刚入门的管理员都习惯使用 RDP 或其它类似的工具连接到远程 Windows 中进行图形化管理。而 PowerShell 及 PsTools 等工具可以帮助我们在命令行中执行相当多的管理任务,更主要的是可以将其写成脚本来执行周期性重复任务或在管理大批量服务器时提高效率。
在企业环境中掌握更多的命令行工具不仅可以节省时间,以更聪明和智能的方式完成工作,更是一个系统管理员所必需掌握的关键技能。
作为 Sysinternals 工具包中的一个子集,PsTools 本身就有十来个命令行小工具,下面我们会逐个为大家进行介绍:
PsExec – 在远程计算机执行命令
PsFile – 查看打开的网络文件
PsGetSid – 获取 Machine SID
PsInfo – 查看简要系统信息
PsKill – 按进程名或PID杀掉进程
PsList – 列出进程信息
PsLoggedOn – 显示已登的会话
PsLogList – 命令行获取 event log
PsPasswd – 更改用户密码
PsPing – 简单的tcp/udp连接测试工具
PsService – Windows 服务管理命令
PsShutdown – 关机、注销命令
PsSuspend – 暂停或恢复某个进程
以上所有命令都可以直接在本地计算机上使用,不过 PsTools 设计出来就是为了方便对远程 PC 进行管理的。
连接远程计算机
PsTools 所有工具连接远程计算机都可以使用同一个通用语法,例如:
psinfo pc1,pc2,pc3
双斜杠后面可以直接跟计算机名(可以解析netbios)、IP 地址或 FQDN,也可以在命令后跟多台计算机以实现批量。
如果你不是以域管理员等有权限的用户来执行命令、没有域环境或者需要手动指定有权限的远程用户,可用 -u 参数指定用户,-p 参数指定密码。
psinfo computername –u user –p Password
如果是域环境,需要将用户写为「DOMAINuser」样式。
配置远程管理权限
PsTools 工具在域中可以工作得非常好,管理员不必考虑过多的权限问题。但对于工作组环境中的 Windows Vista/7/8/10,需要调整远程计算机上的用户账户控制(UAC)之后 PsTools 工具才能正常运行。
即便你是远程目标 PC 的 Local Administrators 组成员,在使用命令行进行远程连接时还是会使用类似 net use * remotecomputerShare$ 的方式,这不被 Windows 视为有完全管理员权限。因为连接到远程计算机需要有权限才能执行管理任务,命令行连接方式也无法触发 UAC,所以直接远程连接使用 PsTools 工具远程连接工作组计算机会报权限错误。
要保证 PsTools 工具能在工作组环境中正常使用,你需要更改注册表:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionPoliciesSystem
在上述注册表路径中创建一个名为 LocalAccountTokenFilterPolicy 的 32 位 DWORD 值,并将其值设置为 1 即可。
PsExec
PsExec 是 PsTools 工具系列中最为常用的一个命令行工具,它可以让我们在本地或远程计算机上「运行」任何东西,包括更改注册表、执行脚本或应用程序等。参数类似:
psexec 计算机名