PowerShell收集服务器日检报告,并发邮件给管理员脚本修改应用于生产环境实例

前阵子看了大向的一篇文章,感觉他分享的脚本非常好用。原文地址:http://blog.51cto.com/hubuxcg/1604582

但是在部署的过程中还是遇到了种种问题,现在就瑾以此文以作记录。

  1. 最开始遇到的问题是脚本无法读取CPU的使用。原代码如下:
$CPULoad=(Get-WmiObject  win32_Processor -computername $Computer ).LoadPercentage

检查后发现原来是服务器的CPU有2颗所以无法显示所至,故代码修改为:

$CPULoad=(gwmi –computername $Computer win32_Processor)|select LoadPercentage|foreach{echo "cpu:" $_.LoadPercentage}

这样有多颗CPU也可以进行读取了。

2.该脚本运行需要运行命令账号对该机器有管理员权限,我司在域内其他机器是拿掉了域的administrator账号。所以需要专门开一个账号对脚本进行操作。

新开账号后加入builtin的administrators群组内,该账号就有对域内DC的管理权限了。

另,我是用该账号运行脚本,故要在想读取内容的所有服务器管理员组内都要加上该账号。

3.计划任务无法执行

原代码:

$ServerName=(Get-Content ".\serverlist.txt")

问题就出在这里,如果要把脚本添加到计划任务内,那么不能使用相对地址,而是要用绝对地址。

$ServerName=(Get-Content "D:\script\serverlist.txt")

修改后就无问题了。

4.原脚本需要开放执行主机的匿名relay用来发送邮件。如果出于安全考虑不想开放该主机的匿名relay权限。则可以修改如下位置:

Send-MailMessage @email

修改为:

$ss=ConvertTo-SecureString -String "实际账号密码" -AsPlainText -force
$ss|Write-Host
$cre= New-Object System.Management.Automation.PSCredential("实际账号",$ss)

之后再增加参数

Send-MailMessage @email -Credential $cre

5.该脚本主要使用wmi类读取服务器内容。而wmi类也可以使用-Credential 参数增加凭据,那么读取非加域机器就成为了可能。

原理一样在脚本的前面增加凭据代码

$ss=ConvertTo-SecureString -String "实际账号密码" -AsPlainText -force
$ss|Write-Host
$cre= New-Object System.Management.Automation.PSCredential("实际账号",$ss)

之后在每一个Get-WmiObject  win32_Processor后增加参数-Credential 添加凭据即可

为什么要这么干呢。而不是在非加域机器本身上执行?因为公司还有一些2003的机器不加域,也没powershell。。。

在这里遇到一个问题,读取日志功能Get-EventLog,找到了使用wmi类代替的Get-WmiObject  -Class Win32_NTLogEvent 但是需要根据语言的不同修改对应的内容

原:

$ApplicationEvents = Get-EventLog -ComputerName $Computer -LogName Application -EntryType Error,Warning -Newest $EventNum

修改后:

$ApplicationEvents =Get-WmiObject -ComputerName $Computer -Credential $cre -Class Win32_NTLogEvent -Filter '(Type="错误" or Type="警告")and LogFile="Application"' |select -First $EventNum -Property type, TimeGenerated,sourcename, message

如果是英文系统则改为(Type="Error" or Type="Warning")即可。

6.wmi需要打开防火墙对应端口,

使用cmd命令如下:

netsh firewall set service RemoteAdmin enable

或者

netsh advfirewall set allprofiles settings remotemanagement enable

修改后的脚本下载地址:

http://down.51cto.com/data/2440489

原文地址:http://blog.51cto.com/12541359/2072007

时间: 2024-10-11 19:29:31

PowerShell收集服务器日检报告,并发邮件给管理员脚本修改应用于生产环境实例的相关文章

用 PowerShell收集服务器日检报告,并发邮件给管理员

-----提供AD\Exchange\Lync\Sharepoint\CRM\SC\O365等微软产品实施及外包,QQ:185426445.电话18666943750 博文Powershell程序及部分描述从大向博客处转载,原文地址见下面网址 http://hubuxcg.blog.51cto.com/2559426/1604582 作为服务器管理员,日常工作包括经常检查各个服务器硬盘使用情况.内存.CPU.服务.事件日志等. 如果没有没有借助第SCOM/zabbix/Host Monitor等

用PowerShell收集服务器日检报告,并发邮件给管理员

参考大象哥的博文,原博文地址http://hubuxcg.blog.51cto.com/2559426/458065 我是在大象哥的代码里面加了一个搜集服务器系统补丁的选项,给大家看下,一共增加两个地方,列出补丁,导出到html,增加的代码如下 列出补丁,我这里是列出系统安装的最后三个补丁,大家可以自己修改 [String]$HotfixEvents=Get-HotFix -ComputerName $Computer |where{$_.InstalledOn -ge [datetime]"$

linux内核调优生产环境实例及详解(服务器内核优化)

cat > /etc/sysctl.conf << EOF net.ipv4.ip_forward = 0         net.ipv4.conf.all.rp_filter = 1 net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.default.accept_source_route = 0 kernel.sysrq = 0 kernel.core_uses_pid = 1 net.bridge.bridge-nf-call-ip

Tsar:淘宝的一个用来收集服务器、系统、和应用信息的采集报告工具!!!

项目背景: 老板说,找个逼格高的开源软件来收集服务器.系统.和应用信息!!!! 实验环境: vmware workstation 11 centos6.5的系统下 服务器:ip:192.168.0.25 SecureCRT (ssh远程连接软件) 软件介绍: Tsar是淘宝开发的一个非常好用的系统监控工具,在淘宝内部大量使用,它不仅可以监控CPU.IO.内存.TCP等系统状态,也可以监控Apache,Nginx/Tengine,Squid等服务器状态.值得一提的是,Tsar 支持将数据存储到 M

收集2012集群共享卷空间使用情况,并用邮件通知管理员

从Windows2012开始,ClusterStorageVolume不再是直接以盘符的方式出现了,在我的电脑中,无法直接看到,而是显示在C:\ClusterStorage\下面 如果要查看大小.使用状态,需要进到Failover Cluster Managert管理界面,进到存储设备.磁盘.然后选某一个卷,才可以查大小.空间使用情况等: 或是进到磁盘管理界面的选中磁盘.右键.属性查看 之前我有发一个收集服务器硬盘空间的工具,http://hubuxcg.blog.51cto.com/25594

ELK之八----Logstash结合kafka收集系统日志和nginx日志

一.logstash结合kafka收集系统日志和nginx日志 架构图: 环境准备: A主机:kibana.elasticsearch,有条件可以将两个服务器分开:192.168.7.100 B主机:logstash主机:192.168.7.101/nginx服务器也在此主机上 C主机:logstash主机:192.168.7.102 D主机:kafka/zookeeper:192.168.7.104 E主机:kafka/zookeeper:192.168.7.105 1.使用logstash-

Windows下利用Python动态检测外网IP并发邮件给邮箱

我们知道,运营商给分配的都是动态IP,IP地址过一段时间会自己变化,这就给需要静态地址的应用带来不便,例如搭建服务器或者远程控制电脑,这种情况必须知道自己电脑的IP,利用Python可以方便的自动检测并向邮箱发送邮箱. 但是,个人网络一般都是通过路由器来上网,直接检测电脑的IP并不可行,需要得到外网的IP.内网电脑可以通过端口映射来映射到外网.检测的原理如下: 1.通过自己的电脑信息不太好获取外网IP,幸好有一些雷锋网站可以帮助我们来检测,例如 http://city.ip138.com/ip2

全网服务器数据备份方案(模拟生产环境)+邮件告知

使用rsync实现全网数据备份(模拟生产环境)+邮件告知 项目要求来源于网络:http://oldboy.blog.51cto.com/2561410/1856048 假定3台服务器主机名分别为web01.backup.nfs01,主机信息如下表: 服务器说明 内网IP 主机名 nginx web服务器 192.168.1.222 WEB-01 NFS存储服务器 192.168.1.233 NFS-01 rsync备份服务器 192.168.1.244 BACKUP 要求:每天晚上00点整在We

转-阿里云CentOS Linux服务器上用postfix搭建邮件服务器

http://www.cnblogs.com/dudu/archive/2012/12/12/linux-postfix-mailserver.html 注:本文的邮件服务器只用于发送邮件,也就是STMP服务器. 一.准备工作 1. 为邮件服务器添加DNS解析 虽然不加DNS解析也能把邮件发出去,但会被大多数邮件服务器当作垃圾邮件.根据我们的实际经验,需要添加三条DNS解析记录:A记录.MX记录.TXT记录.比如域名cnblogs.info,对应的DNS记录如下: 2. 准备存放邮件的硬盘空间