PowerShell 把quser 字符串结果转换为对象
今天豆子需要远程注销一个终端服务器的用户,操作很简单,首先quser获取远程用户的sessionID,然后logoff命令注销即可
quser /server:XXXX logoff sessionID /server:XXX
和早期的cmd和Linux的bash命令一样,quser的结果都是字符串。字符串的处理对于脚本来说比较麻烦,如果能够转换成标准的object对象就好了。
仔细观察一下quser的结果,可以看见他的输出结果很整齐,我如果能够把他中间的空格用逗号替换掉,那就是标准的csv格式,那就很容易转换为对象了。唯一的问题是有的列,比如sessionname为空,那我就需要数数到底多少个空格需要替换了
PS C:\users\yli\Documents> $a=quser /server:sydbcc02 PS C:\users\yli\Documents> $a USERNAME SESSIONNAME ID STATE IDLE TIME LOGON TIME smiths rdp-tcp#5 16 Active 24692+13:29 3/14/2017 9:06 AM llederbauer rdp-tcp#4 22 Active 1:18 3/14/2017 9:18 AM jedwards 23 Disc 1:39 3/14/2017 7:54 AM tpicken rdp-tcp#2 24 Active . 3/14/2017 8:22 AM okaragiaouris rdp-tcp#9 27 Active 18 3/14/2017 8:55 AM bhue rdp-tcp#7 28 Active 12 3/14/2017 9:20 AM mcherginets 29 Disc 1:37 3/14/2017 8:58 AM abishop 30 Disc 2:48 3/14/2017 9:22 AM fburns 31 Disc 2:28 3/14/2017 9:37 AM ygordony 32 Disc 2:07 3/14/2017 10:04 AM tmoloney rdp-tcp#0 33 Active 1:07 3/14/2017 9:30 AM smaroo rdp-tcp#1 34 Active 1:45 3/14/2017 10:19 AM jwoodford 35 Disc 22 3/14/2017 10:42 AM mozard rdp-tcp#8 36 Active 56 3/14/2017 11:08 AM gmarsh rdp-tcp#6 37 Active 41 3/14/2017 10:56 AM mking 38 Disc 20 3/14/2017 11:11 AM mcolgan rdp-tcp#11 39 Active 59 3/14/2017 11:16 AM jbelgiovane rdp-tcp#12 41 Active 39 3/14/2017 11:33 AM ndrabsch 42 Disc 3 3/14/2017 11:57 AM
直接看不太容易区分,转换成ASCII看看,可以看见32(代表空格)一共有16个
$a=quser /server:sydbcc02 [int[]][char[]]$a[2] 32 108 108 101 100 101 114 98 97 117 101 114 32 32 32 32 32 32 32 32 32 32 32 114 100 112
okay,那我指定数量从2到17之间的空格都替换为逗号,从2开始是因为‘idle time’这些名字中间有空格就别替换了,最后代码如下
$quser = (quser /server:sydbcc02) -replace '\s{2,17}', ',' | ConvertFrom-Csv $quser | ft USERNAME SESSIONNAME ID STATE IDLE TIME LOGON TIME -------- ----------- -- ----- --------- ---------- smiths 16 Disc 3 3/14/2017 9:06 AM llederbauer rdp-tcp#4 22 Active 1:26 3/14/2017 9:18 AM jedwards 23 Disc 1:47 3/14/2017 7:54 AM tpicken rdp-tcp#2 24 Active 7 3/14/2017 8:22 AM okaragiaouris rdp-tcp#9 27 Active . 3/14/2017 8:55 AM bhue rdp-tcp#7 28 Active 20 3/14/2017 9:20 AM mcherginets 29 Disc 1:44 3/14/2017 8:58 AM abishop 30 Disc 2:56 3/14/2017 9:22 AM fburns 31 Disc 2:36 3/14/2017 9:37 AM ygordony 32 Disc 2:15 3/14/2017 10:04 AM tmoloney rdp-tcp#0 33 Active 1:15 3/14/2017 9:30 AM smaroo rdp-tcp#1 34 Active 1:52 3/14/2017 10:19 AM jwoodford 35 Disc 30 3/14/2017 10:42 AM mozard rdp-tcp#8 36 Active . 3/14/2017 11:08 AM gmarsh rdp-tcp#6 37 Active 48 3/14/2017 10:56 AM mking 38 Disc 27 mcolgan 39 Disc . 3/14/2017 11:16 AM jbelgiovane rdp-tcp#12 41 Active 47 3/14/2017 11:33 AM ndrabsch rdp-tcp#3 42 Active . 3/14/2017 11:57 AM alawton 43 Disc 11 3/14/2017 12:02 PM
这样子就可以很容易的进一步处理了,同样的思路也可以用在其他的cmd命令上。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
memcached--------基于centos6源码安装
1. 背景 许多Web应用程序都将数据保存到RDBMS中,应用服务器从中读取数据并在浏览器中显示。但随着数据量的增大,访问的集中,就会出现REBMS的负担加重,数据库响应恶化,网站显示延迟等重大影响。Memcached是高性能的分布式内存缓存服务器。一般的使用目的是通过缓存数据库查询结果,减少数据库的访问次数,以提高动态Web应用的速度、提高扩展性。如图: Memcached作为高速运行的分布式缓存服务器具有以下特点。 1. 协议简单 memcached的服务器客户端通信并不使用复杂的MXL等格式,而是使用简单的基于文本的协议。 2. 基于libevent的事件处理 libevent是个程序库,他将Linux的epoll、BSD类操作系统的kqueue等时间处理功能封装成统一的接口。memcached使用这个libevent库,因此能在Linux、BSD、Solaris等操作系统上发挥其高性能。 3. 内置内存存储方式 为了提高性能,memcached中保存的数据都存储在memcached内置的内存存储空间中。由于数据仅存在于内存中,因此重启memcached,重启操作...
- 下一篇
监控SQL Server数据库异常镜像状态发告警邮件
监控SQL Server数据库异常镜像状态发告警邮件 在部署了数据库镜像之后,我们需要监控参与镜像的主数据库和镜像数据库的状态,如果状态异常,发送告警邮件。那么这个脚本需要在主和镜像服务器上都运行。 目录视图sys.database_mirroring对SQL Server实例上的每个数据库都包含一行(包括系统数据库和未配置镜像的数据库),当然也包含所有镜像数据库的状态信息。我们可以查询该目录视图,对于每个异常状态的镜像数据库触发告警邮件。笔者的环境配置的是异步镜像,依赖于手动故障转移。 前提条件: 1. 配置好数据库邮件,有正确的Profile。 2. 有权限发送邮件的有效Login,需要是msdb数据库中DatabaseMailUserRole角色成员。 3. 一对用于监控的镜像数据库。 DECLARE @stateVARCHAR(30) DECLARE @DbMirroredINT DECLARE @DbIdINT DECLARE @StringVARCHAR(100) DECLARE @databasesTABLE(DBidINT,mirroring_state_des...
相关文章
文章评论
共有0条评论来说两句吧...