最近写的一个关于统计某个时间点所有组织内CAS 服务计数器的脚本,有需要可以将你的需求发给我!

下面是我针对客户需求做了一个简单的PS脚本,我都加了中文注释,大家可以看看能不能看得懂,如果有需要请加入66140619 群讨论!

 

#requires -version 2
#Please run this script in exchange CAS Roles
#本脚本撰写者:徐鹏 如果你有脚本撰写需求,可以发送邮件到 10853913@qq.com 我将尽力实现
#脚本执行方法之一:.\get-performancedata.ps1 -Queryperformance 目的是生成当前时间点所有的CAS 连接数的一些数据,并告知用户当前时间点的数据已经收集完成
#脚本执行方法之二: .\get-performancedata.ps1 -SendPerformancedata 目的是将生成的数据以附件方式发往收件者
param
(
 [switch] $Queryperformance,
 #定义取数据库的开关
 [switch] $SendPerformancedata,
 #定义发送数据开关
 [string] $TempLog="c:\tmpquery",
 #定义数据产生目录,这个目录可以你在执行PS 自己定义
 [string] $SmtpServer="tpkhubcasa.tpktest.com",
 #定义发送邮件服务器
 [string] $Sendfrom="administrator@tpktest.com",
 #定义发送者
 [string] $Mailreceive="administrator@tpktest.com"
 #定义邮件接受者
)

#region Query Your Exchange Performance
if ($queryperformance)
  #判断是否执行query performance 操作
{
   if (!(Test-Path -Path $templog))
    #判断在你的磁盘下面是否存在"c:\tmpquery"目录,上面条件是不存在
     {
  New-Item -ItemType directory -Path $templog
  #新建上面提到的这个目录
  }
  $exchsvr=get-exchangeserver| Where-Object {$_.serverrole -like "*clientaccess*"}
    #获取组织内所有Clientaccess 角色服务器,因为只有clientaccess 才有 rpcclientaccess服务
   $Perdatas=@()
    #定义数组为空
   foreach ($exch in $exchsvr)
   #进行计算机名称轮询。。foreach 函数和cmd 的for 函数一样
   {
   $count++
   #参数自加
   Write-Progress -Activity "Getting Performance Data Now,Please wait" -Status "Getting Now" -PercentComplete ($count /($exchsvr.count))
   #在执行操作的时候为了让我们直观的看到一些反馈,我们需要上面的定义,如果不希望看到执行过程,则无需填写
 
   $comuterperformancedata=Get-WmiObject  Win32_PerfFormattedData_MSExchangeRpcClientAccess_MSExchangeRpcClientAccess -ComputerName $exch
   #获取当前计算机的 MSExchangeRpcClientAccess指针的值
   $Perdata=New-Object psobject
   #创建一个叫做$perdata的 PSO 对象
   $currenttime=(Get-Date).tostring("HH:mm")
   #将当前时间以HH:mm字符串形式显示出来,HH 代表是24小时制
   $Perdata |Add-Member  -MemberType NoteProperty -name "当前时间" -Value $currenttime
   #PSO对象添加一行属性,就是当前执行的时间,执行时间通过tostring 的方法规范输出的结果
   $perdata |Add-Member -MemberType NoteProperty -Name "服务器名" -Value $exch
   #PSO对象添加一行属性,将当前执行的服务器名称加入这列中
   $Perdata |Add-Member -MemberType NoteProperty -Name "连接数总数"  -Value $comuterperformancedata.connectioncount
   #添加一列,将开始获取的$comuterperformancedata的连接总数获取出来
   $Perdata |Add-Member -MemberType NoteProperty -Name "用户连接数"  -Value $comuterperformancedata.usercount
   #添加一列,将$comuterperformancedata 用户连接数获取出来
   $Perdata |Add-Member -MemberType NoteProperty -Name "活动用户连接数"  -Value $comuterperformancedata.activeusercount
   #添加一列,将$comuterperformancedata 活动用户连接数获取出来
   $Perdatas =$Perdatas+$Perdata
   #将当前的组织内的服务器所有数据获取出来,组成一个数组
   }
  
   $outputpath=$templog+"\"+"performance"+$(get-date -Format "yyyy-MM-dd")+".csv"
   #生成CSV存在路径,名称格式为年-月-日,这个文件每天产生一个
  
   if (!(test-path -Path $outputpath)) 
   #判断上面的路径是否存在,根据存在与否执行不同的语句
     {
  $Perdatas |Export-Csv -Encoding default -notypeinformation -Path $outputpath
  #如果不存在CSV文件,我们将perdatas 中的数组输出为csv文件
  }
  else
  {
  $Perdatas |ConvertTo-Csv -NoTypeInformation |select -Last $exchsvr.count |Out-File -Encoding default  -Append -FilePath $outputpath
  #如果存在CSV 文件,我们就将上面的数据以添加的方式导入到csv文件中
  }
 
  $messagebody ="Dear sir:
                     Perforcae count in exchange cas has been collect. Current colleting  time is"+$currenttime
  #设置邮件主体
  Send-MailMessage -SmtpServer $SmtpServer -From $Sendfrom -To $Mailreceive -Subject "Exchange Performance counter has been collected" -Body $messagebody
  #发送邮件告知收件人数据已经收集到并且已经产生
   }

#endregion

#region SendMailaddress
if ($SendPerformancedata)
{
$sendfilepath=$TempLog+"\"+"performance"+(Get-Date -Format "yyyy-MM-dd")+".csv"
#验证文件目录是否存在
$bodymessage="Dear Sir:
                  This is mesage from Exchange Server,you can check attachment for further information of performance data.
     
     Best Regards"
#邮件主题和内容
     

if (test-path -Path $sendfilepath)
#判断目录是否存在
 {
  Send-MailMessage -SmtpServer $SmtpServer -From $Sendfrom -To $Mailreceive -Subject "Please Check today's Exchange Server Performance Data" -Body $bodymessage -Attachments $sendfilepath
 #如果文件存在,我们直接将文件以附件方式发送邮件给定义好的邮件发送人
 }
  else
  {
  Send-MailMessage -SmtpServer $SmtpServer -From $Sendfrom -To $Mailreceive -Subject "File Does not exist" -Body  "Sorry sir,File Does not exist.Please check file in exchange server"
 #如果文件不存在,我们发送邮件告知收件人,文件不存在
  }
 
}
#endregion
 
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雾岛心情

欢迎你的打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值