概念

Powershell 是运行在windows机器上实现系统和应用程序管理自动化的命令行脚本环境。你可以把它看成是命令行提示符cmd.exe的扩充,不对,应当是颠覆。 powershell需要.NET环境的支持,同时支持.NET对象。微软之所以将Powershell 定位为Power,并不是夸大其词,因为它完全支持对象,面向对象的便捷可想而知了。其可读性,易用性都非常的完美。

在运维windows 服务器的时候,其作用是非常大的。简洁高效等等。这里我简单用一个我应用的地方来展示一下。

背景

有时候我们需要监视来自特定用户电脑对于数据库的连接。比如该用户说,他偶尔会断开连接或者有时连接某个程序时出现问题,而数据库就是我的数据库。这个问题一开始真的很让我着急(FUCK),因为问题不是经常能够重现难以追踪。即使重现了错误,可能提供的信息也不够完整。

为了帮助实现对此类问题的troubleshoot ,我编写了两个PowerShell 脚本。脚本能够可以无人值守,并且日志在一段时间后查询。我打算在用户的PC上运行这个脚本,并且该PC在不同的网络或者不同的子网。也可以在同一时间在SQLServer服务器运行脚本。会产生三个不同的日志文件,然后进行比较。这些脚本是对于cpu使用和负载占用很少的轻量级程序。但是必须要谨慎使用运行的查询,尽量针对一些小的表进行查询等,比如select count(*)from 小表。

基本上所有这些脚本主要实现是:连接SQLServer并且执行查询。循环执行查询知道手动终止它。假如有错误重现了,就会记录日志到日志文件然后再次连接->执行查询。

OpenConnQueryCloseConn.ps1 - 这个脚本作用就是打开连接数据库实例,运行sql指令,然后关闭连接。这个处理将会一次又一次的重复直到你手动关闭它。

OpenConnLoopQuery_Long.ps1 - 第二个脚本的功能就是打开连接,让它保持打开然后重复执行查询脚本,直到你手动终止循环才会中断循环关闭连接。

图1 最大区别在于循环位置

两个脚本都会在终端和日志记录日志。如果连接产生问题我们也希望在日志文件中看到错误信息。当错误信息只在一个日志文件中,那么有时就能引导我们发现网络或者特定的某种错误。

PowerShell脚本的概述

首先我们来看一下OpenConnQueryCloseConn.ps1这个脚本。这个脚本一开始先设定连接参数。确保下面的参数是可用的参数。

21-27行就是我们的连接参数和查询命令变量 。

图2 主要的参数变量

$serverName="服务器名称"
$databaseName="数据库名称"
$uid="User ID"
$pwd="user Password "
$sqlCommand="命令语句-比如查询一个小表的行数"
$logLoaction="记录日志文件的位置.   ---  c:\ps\OpenConnQueryCloseConn.log"

脚本的底部就是循环的主要部分。

图3 循环部分

fn_HitSQL 函数大部分工作已经完成了。打开数据库连接然后不断去执行查询。有很多地方主要的工作就是日志记录。如下:

图4 日志记录部分

还有一个函数去记录连接和错误。函数fn_WriteToLog 将错误信息附加上日期后记录到终端然后添加到日志文件中。

做好了以上所有工作后,执行脚本,当法伤网络连接问题时,就会产生日志文件错误日志。如下:

错误日志信息

第二个脚(OpenConnLoopQuery_Long.ps1 )本基本上与第一个一样如图1 中所示一样就是在执行语句后面紧跟着一个循环语句这样避免了关闭连接。在一个连接中不断重复语句。这里也就不仔细讲解了。

运行两个脚本需要执行powershell 脚本,指令如下,当然也可以自己拼写:

PowerShell.exe -ExecutionPolicy Bypass -File C:\PS\OpenConnLoopQuery_Long.ps1
PowerShell.exe -ExecutionPolicy Bypass -File C:\PS\OpenConnQueryCloseConn.ps1

需要注意的是要提前设定好路径“C:\PS”

脚本下载地址:

没找到如何上传脚本...,有哪位大神可以告知。具体脚本可向我询问留言即可。发邮箱

谢谢博友提供方式。

下载地址:

http://files.cnblogs.com/files/wenBlog/OpenConnLoopQuery_Long.zip

http://files.cnblogs.com/files/wenBlog/OpenConnQueryCloseConn.zip

总结

本篇主要介绍了自己开发的一个利用powershell来实现的循环监测连接出现网络异常的脚本。本质上就是循环连接查询数据库,记录连接失败或者查询失败的信息。之前通过C#和其他开发工具也都实现过不论是windowsService 还是其他小程序。但是感觉powershell开发起来更简单,对机器性能影响更小,当然python也是一样的道理。之所以选择使用powershell主要是学习响应的语法便于将来运维windows服务器。越来越发现PowerShell的强大,与高手相比还有很大空间要去学习。

转载于:https://www.cnblogs.com/wenBlog/p/5913754.html

使用PowerShell 监控运行时间和连接情况相关推荐

  1. datasnap 如何监控客户端的连接情况

    如果客户端是TCP/IP是短连接的情况就没有必要了. type pClientConns = ^TClientConns; // 客户连接 TClientConns = record clientid ...

  2. netstat监控大量ESTABLISHED连接与Time_Wait连接问题

    为什么80%的码农都做不了架构师?>>>    问题描述: 在不考虑系统负载.CPU.内存等情况下,netstat监控大量ESTABLISHED连接与Time_Wait连接. # n ...

  3. python 远程桌面爆破,Python安全运维第一弹 --实时监控远程桌面连接

    大部分安全工作者都会选择学习python这门语言,常用的内建模块以及大量的第三方模块能够帮助我们快速的实现自己的目的.在日常的安全运维中,很多时候我们会碰到避免安装第三方软件或是第三方软件无法契合自己 ...

  4. 使用C#调用外部Ping命令获取网络连接情况

    以前在玩Windows 98的时候,几台电脑连起来,需要测试网络连接是否正常,经常用的一个命令就是Ping.exe.感觉相当实用. 现在 .Net为我们提供了强大的功能来调用外部工具,并通过重定向输入 ...

  5. 利用ngxtop实时监控nginx的访问情况

    利用ngxtop实时监控nginx的访问情况 关于对nginx web server的实时访问的实时监控问题,我很久之前就想实现的,现在虽有nginx自带的status扩展,但那是全局的,无法细分到v ...

  6. 监控目前所有连接SQL SERVER的用户信息

    原文:监控目前所有连接SQL SERVER的用户信息 if object_id('p_getlinkinfo','P')is not null drop proc p_getlinkinfo go c ...

  7. oracle连接的内存,简单查看oracle的连接情况和内存使用情况 -电脑资料

    简单查看oracle的连接情况和内存使用情况 1.查看连接oracle的所有机器的连接数 select machine,count(*) from v$session group by machine ...

  8. 查看与其他计算机是否连接网络,电脑的网络连接情况要如何的查看和管理

    电脑的网络连接情况要如何的查看和管理 导读:小编根据大家的需要整理了一份关于<电脑的网络连接情况要如何的查看和管理>的内容,具体内容:电脑网络连接状况的查看,是可以帮助我们更好的知道我们的 ...

  9. 查看oracle索引状态,oracle监控索引的使用情况

    1.使用monitor index来监控索引使用 监控单个索引使用情况:alter index monitoring usage; 关闭监控: alter index nomonitoring usa ...

最新文章

  1. iPhone 应用开发:音频播放
  2. 谈谈Silverlight 2中的视觉状态管理 Part1
  3. Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(Button的command/Label/PhotoImage/封装为类)
  4. .Net 中DataSet和DataTable的 区别与联系
  5. 变量和简单数据类型(一)
  6. The temporary upload location [/tmp/tomcat.xxx/work/Tomcat/localhost/etc] is not valid
  7. 哈哈!TCP泄露了操作系统信息···
  8. 《AngularJS高级程序设计》——第2章 你的第一个AngularJS应用 2.1 准备项目
  9. 7. COM编程——初始化并创建COM对象
  10. 海康威视摄像头Android直播APP开发
  11. 浅谈易用性测试及GUI常见的测试要求
  12. MJKDZ PS2手柄控制OskarBot小车(二):硬件连接与通信时序
  13. javaweb调用qq认证登录接口
  14. linux磁盘坏道测试,Linux磁盘坏道检测
  15. 小型企业有必要引进ERP系统?
  16. 直连网线和交叉网线的线序
  17. 自建服务器和购买云服务器的过程总结
  18. 【自然语言处理】【多模态】多模态综述:视觉语言预训练模型
  19. 开发过程问题汇总(不断更新)
  20. 从软件测试培训班出来后找工作这段时间的经历,教会了我这五件事...

热门文章

  1. 数学推导+纯Python实现机器学习算法:逻辑回归
  2. Windows恶意软件API调用特征分析
  3. 性能压测诡异的Requests/second 响应刺尖问题
  4. binlog日志的三种模式
  5. iOS开发小技巧--边接受数据边写入文件的两种方法
  6. Aix6.1安装openssh
  7. Android被逼学习小例子1
  8. 实现虚拟xp与主机xp之间的文件共享
  9. Sql语句查询 显示序号
  10. 用价值锚定革掉股市的命!