转自:https://blog.csdn.net/hongkaihua1987/article/details/85230082 https://blog.51cto.com/winhe/1742633
本篇文章是基于pstools 2.7版本。pstools是sysinternals出的一个功能强大的nt/2k远程管理工具包。
它的主页为http://www.sysinternals.com/
下载地址:https://docs.microsoft.com/zh-cn/sysinternals/downloads/pstools
使用工具的前提条件:
1:首先确认组策略是否配置正确
运行-secpol.msc-本地策略-安全选项-网络访问:本地账户的共享和安全模型
修改此项为经典
然后刷新组策略使之生效
运行-cmd-gpupdate
2:打开admin$的网络访问权限
运行-cmd-net share admin$
net share
然后再运行一遍 net share admin$ 查看admin$的共享属性
如果所示 权限显示为 READ
需要更改为FULL完全控制模式
现在需要手动更改C:\windows 的权限
首先右击c:\windows 文件夹选择共享标签 取消所有的共享
然后重新设置共享
共享名设置为 ADMIN$
注释为 远程管理
允许最多用户
权限 - everyone-完全控制
点击应用
然后再次使用net share admin$ 查看权限是否正确
命令详解:
(1)psexec
psexec是一个远程执行工具,你可以像使用telnet一样使用它。
它的使用格式为:
psexec \\远程机器ip [-u username [-p password]] [-c [-f]] [-i][-d] program [arguments]
它的参数有:
-u后面跟用户名 -p后面是跟密码的,如果建立ipc连接后这两个参数则不需要。(如果没有-p参数,则输入命令后会要求你输入密码)
-c <[路径]文件名>:拷贝文件到远程机器并运行(注意:运行结束后文件会自动删除)
-d 不等待程序执行完就返回,(比如要让远程机器运行tftp服务端的时候使用,不然psexec命令会一直等待tftp程序结束才会返回)
-i 在远程机器上运行一个名为psexesvc进程,(到底什么用弄不明白)
假设我在远程机器ip有一个账号,账号名是:abc 密码是:123
比如想要用telnet一样在远程系统上执行命令可以打:
psexec \\远程机器ip -u abc -p 123 cmd
如果想要远程机器执行本地c:\srm.exe文件可以打:
psexec \\远程机器ip -u abc -p 123 -c c:\srm.exe
如果想要让远程机器执行本地上tftp服务端,(假设tftp服务端在本地c:\tftp32.exe),可以打:
psexec \\远程机器ip -u abc -p 123 -c c:\tftp32.exe -d
(后面例子不再重复-u和-p的用法)
(2)psservice
psservice是一个服务管理程序。
它的使用格式为:
psservice [\\远程机器ip [-u username] [-p password]]
它的参数只有:
-u 后面跟用户名 -p后面是跟密码的,如果建立ipc连接后这两个参数则不需要。(如果没有-p参数,则输入命令后会要求你输入密码)
它的command有:
query [服务名]:显示某一服务的状态,如不填服务名则显示所有服务的状态。
config <服务名>:显示某一服务的配置。
start <服务名>:启动某一服务。
stop <服务名>:停止某一服务。
testart <服务名>:停止某一服务并重新启动它。
pause <服务名>:暂停某一服务。
cont <服务名>:恢复暂停的服务。
depend <服务名>:显示某一服务依存关系。
find <服务名>:在网络种搜寻指定的服务。
比如你想查看在远程机器上的telnet服务的状态可以打:
psservice \\远程机器ip query tlntsvr (tlntsvr为telnet服务的服务名)
比如你查看远程机器上的telnet服务的配置可以打:
psservice \\远程机器ip config tlntsvr
比如你想启动远程机器上的telnet服务可以打:
psservice \\远程机器ip start tlntsvr
其他用法以此类推。
(3)pssuspend
pssuspend是一个暂时停止进程的软件
它的使用格式为:
pssuspend [-r] [\\远程机器ip [-u username] [-p password]]
它有三个参数:
-u:后面跟用户名 -p:后面是跟密码的,如果建立ipc连接后这两个参数则不需要。(如果没有-p参数,则输入命令后会要求你输入密码)
-r:恢复进程。
比如要暂时停止一个pid号为999,名称为srm.exe的进程可以打:
pssuspend \\远程机器ip 999 或 pssuspend \\远程机器ip srm
如果想要恢复它就可以打pssuspend -r \\远程机器ip 999 或 pssuspend -r \\远程机器ip srm
(4)psinfo
psinfo是一个搜集机器软硬件信息的工具,它可以获得操作系统信息,硬件信息和软件信息。
它的使用格式为:
psinfo [-h] [-s] [-d] [-c] [\\远程机器ip [-u username [-p password]]]
它的参数有:
-u:后面跟用户名 -p:后面是跟密码的,如果建立ipc连接后这两个参数则不需要。(如果没有-p参数,则输入命令后会要求你输入密码)
-h:是显示它安装了哪些补丁包
-s:是显示它装了哪些软件
-d:是显示磁盘信息。
比如我只想看远程机器的软硬件信息和只用打:
psinfo \\远程机器ip
假如我还想看看它装了哪些补丁包可以打
psinfo -h \\远程机器ip
假如我还想看看它磁盘信息可以打:
psinfo -d \\远程机器ip
如果我想看它装了哪些软件可以打:
psinfo -s \\远程机器ip
简单吧.
(5)pslist
pslist是一个查看进程的程序。
它的使用格式为:
pslist [-d] [-m] [-x][-t][-s [n] [-r n] [\\远程机器ip [-u username] [-p password]] [name | pid]
它的参数有:
-u:后面跟用户名 -p:后面是跟密码的,如果建立ipc连接后这两个参数则不需要。(如果没有-p参数,则输入命令后会要求你输入密码)
-s:是使用任务管理器模式实时查看进程,可以按ESC键退出。
-r <秒数>:是和-s连用的一个参数,它用来指定任务管理器模式是的刷新间隔。(默认的刷新间隔为1秒)
-d:示各个进程的cpu使用信息。
-m:显示各个进程的存储器使用信息。
-x:非常详细显示进程的所有信息。
-t:以树型方式显示进程。
比如要查看远程机器ip上的进程的cpu使用信息可以打:
pslist -d \\远程机器ip
比如要查看一个pid号为999,名称为srm.exe进程的存储器使用信息可以打:
pslist -m \\远程机器ip 999 或 pslist -m \\远程机器ip srm
比如要以任务管理器模式实时查看61.12.23.4上进程情况,并且刷新间隔为3秒可以打:
pslist -s -n 3 \\远程机器ip
(6)psuptime
psuptime是一个了解远程机器运行了多久的命令。
使用它只需要打:psuptime \\远程机器ip
(7)psshutdown
psshutdown是一个远程关机命令。
它的使用格式为:
psshutdown [[-s | -r | -k [-t nn][-m "消息"][-f]] -a | -l | -o] [\\远程机器ip]
它的参数有:
-a:取消以前执行的关机指令。
-t:离关机还有多少秒。(默认是20秒)
-s:关闭机器。
-m:是要显示的信息。
-f:是关机是不保存运行的程序。
-r:表示重启。
-l:表示锁定电脑。
-o:表示注销用户。
比如我想让远程机器30秒后关闭并显示(要关机了,请保存文件)则打:
psshutdown -t 30 -s -m "要关机了,请保存文件" \\远程机器ip
如果是要重起的话打:
psshutdown -t 30 -m "要关机了,请保存文件" -r \\远程机器ip
如果要取消刚才的指令可以打:
psshutdown -a \\远程机器ip
其他参数以此类推。
(8)psfile
psfile是一个显示机器上的会话和有什么文件被网络中的用户的打开的命令。
它的使用格式为:
psfile [\\远程机器ip [-u Username [-p Password]]] [[Id | path] [-c]]
它的参数有:
-u 后面跟用户名 -p后面是跟密码的,如果建立ipc连接后这两个参数则不需要。(如果没有-p参数,则输入命令后会要求你输入密码)
-c:关闭会话或文件
比如我想看看远程机器上的会话和被远程用户打开的文件可以打:
psfile \\远程机器ip
接着就会显示
[33] C:\WINNT
User: ADMINISTRATOR
Locks: 0
Access: Read
[63] \PIPE\srvsvc
User: ADMINISTRATOR
Locks: 0
Access: Read Write
接着我想关闭id为33,路径为c:\winnt的这个会话可以打
psfile \\远程机器ip 33 -c 或 psfile \\远程机器ip c:\winnt -c
(9)psloggedon
psloggedon是一个显示目前谁登陆的机器的命令。
它的参数只有:
-l只显示本地登陆用户而不显示其它的网络登陆用户
-x不显示登陆时间
比如说要显示远程机器现在登陆的用户可以打:
psloggedon \\远程机器ip
(10)psgetsid
psgetsid是一个远程获取账号sid信息的工具。
它的使用格式为:
psgetsid [\\远程机器ip [-u username [-p password]]] [account]
它的参数有
-u 后面跟用户名 -p后面是跟密码的,如果建立ipc连接后这两个参数则不需要。(如果没有-p参数,则输入命令后会要求你输入密码)
比如要看远程机器上账号名为abc的sid信息可以打:
psgetsid \\远程机器ip abc
(11)pskill
pskill是一个杀除进程的程序。
它的使用格式为:
pskill [\\远程机器ip [-u username] [-p password]]
比如要杀除一个pid号为999,名称为srm.exe的进程可以打:
pskill \\远程机器ip 999 或 pskill \\远程机器ip srm
(12)psloglist
psloglist
psloglist是一个查看系统事件记录的程序。
它的使用格式为:
psloglist [\\远程机器ip [-u username [-p password]]] [-s [-t delimiter]] [-n # | -d #][-c][-x][-r][-a mm/dd/yy][-b mm/dd/yy][-f filter] [-l event log file]
它的参数有:
-u 后面跟用户名 -p后面是跟密码的,如果建立ipc连接后这两个参数则不需要。
-c:显示事件之后清理事件记录
-l <事件记录文件名>:用于查看事件记录文件
-n :只显示最近的n条系统事件记录。
-d :只显示n天以前的系统事件记录
-a mm/dd/yy:显示mm/dd/yy以后的系统事件记录
-b mm/dd/yy:显示mm/dd/yy以前的系统事件记录
-f <事件类型>:只显示指定的事件类型的系统事件记录。
-x:显示事件数据代码
-r:从旧到新排列(如不加则默认是从新到旧排列)
-s:以一个事件为一行的格式显示,中间默认以逗号格开各个信息。
-t <字符>:这个参数和-s连用,以来改变-s中默认的逗号。
如果我想看远程机器的系统事件记录只用打:
psloglist \\远程机器ip 123
比如我想看最近的10条error类型的记录可以打:
psloglist \\远程机器ip -n 10 -f error
Psping四大功能介绍:ICMP Ping/TCP Ping/延迟测试/带宽测试
本文主要介绍微软的测试工具Psping,该工具功能主要包括:ICMP Ping、TCP Ping、延迟测试、带宽测试
需要说明一种应用场景:由于Windows Azure数据中心禁ICMP,使用Psping的TCP Ping的功能来测试联通性或者故障排查就非常有用了。
工具下载地址: http://technet.microsoft.com/en-us/sysinternals/jj729731
下载完PSTools.zip包之后,放到任意本地磁盘内,解压之后如下:
使用CMD命令行工具进入PSTools所在的文件夹路径,单独输入psping,可见psping四个主要功能的帮助命令,四个功能分别是ICMP Ping、TCP Ping、延迟测试、带宽测试。
【Part.1】ICMP ping功能
输入psping -? i获取ICMP ping相关参数
psping -4 -n 10 -w 2 -h 10 180.76.76.76
-4代表强制使用IPv4联机
-n代表正式ping包的个数,或者定义使用秒s作为单位
-w代表热身ping包的个数,即正式测试前先进行多少次热身测试连接
-h代表最小与最大延迟毫秒数
另外几个参数解释如下:
-i代表间隔秒数,快ping则设置为0
-l代表ping包大小,默认单位是byte。使用 k为单位代表kilobytes(KB),使用m为单位代表megabytes(MB)
-q代表ping过程中不一个个输出值
-t代表长ping不停
-6代表强制使用IPv6联机
psping -i 0 -4 -n 10 -w 2 -h 10 -q 180.76.76.76
由于设置了-i 0这个参数,瞬间出结果
设置了-q则不再显示中间的输出过程,直接输出结果
-l和-t和-6不在此演示了。
【Part.2】TCP Ping功能
使用psping -? t获取帮助信息
psping -n 10 -w 2 -h 10 42.159.27.213:443
与ping功能相同的参数定义:
-n代表正式ping包的个数,或者定义使用秒s作为单位
-w代表热身ping包的个数,即正式测试前先进行多少次热身测试连接
-h代表最小与最大延迟毫秒数
-i代表间隔秒数,快ping则设置为0
-l代表ping包大小,默认单位是byte。使用 k为单位代表kilobytes(KB),使用m为单位代表megabytes(MB)
-q代表ping过程中不一个个输出值
-t代表长ping不停
-4代表强制使用IPv4联机
-6代表强制使用IPv6联机
【Part.3】延迟测试
使用psping -? l获取延迟测试时的帮助信息。
我使用Azure VM搭建了网站部署在8081端口,42.159.27.213:8081
psping -l 1500 -n 300 -h 10 42.159.27.213:8081
-l 1500代表我发送的数据包大小为每个1500 Bytes,TCP联机在Layer 2 Ethernet中的MTU (Maximum Transmission Unit)通常以1500 Bytes为一个单位
-n 300代表放松300个封包
那么300*1500Bytes=450000Bytes,绝大多数在5ms内响应
【Part.4】带宽测试
psping -? b
psping -b -l 1500 -n 15000 42.159.27.213:8081
-b代表将进行带宽测试
-l 1500代表使用大小1500Bytes的数据包
-n 15000代表使用15000个数据包
输出结果显示我测试我的PC与Azure VM之间带宽为470KB/s,其实是因为我的工位的PC被公司IT限速为500KB/s了,所以压到了我PC带宽的极限。