需要将CPU和内存信息发送到Excel工作表
我正在自动检查一些windows服务器的运行状况。我对PowerShell非常陌生(从今天开始) 我希望windows服务器的CPU和内存利用率立即记录在Excel工作簿的不同工作表中。在谷歌搜索并遵循文档之后,我找到了使用Win32_处理器和Win32_operatingsystem类检索此数据的命令 我使用的是Export-CSV cmdlet,它直接将输出复制到excel 我使用New Object cmdlet创建了一个psobject,以将两个输出都添加到属性中,然后粘贴到excel中需要将CPU和内存信息发送到Excel工作表,excel,powershell,Excel,Powershell,我正在自动检查一些windows服务器的运行状况。我对PowerShell非常陌生(从今天开始) 我希望windows服务器的CPU和内存利用率立即记录在Excel工作簿的不同工作表中。在谷歌搜索并遵循文档之后,我找到了使用Win32_处理器和Win32_operatingsystem类检索此数据的命令 我使用的是Export-CSV cmdlet,它直接将输出复制到excel 我使用New Object cmdlet创建了一个psobject,以将两个输出都添加到属性中,然后粘贴到excel中
$Memory=gwmi win32_operatingsystem |选择对象@{Name=“MemoryUsage”;表达式={{0:N2})-f(($.TotalVisibleMemorySize-$.FreePhysicalMemory)*100)/$.TotalVisibleMorySize)}
$CPU=gwmi win32|处理器|测量对象-属性加载百分比-平均值|选择平均值
$Props=@{“内存”=$Memory;“CPU利用率”=$CPU}
$Mydata=New Object-TypeName psobject-Props属性$Props
$MYdata |导出Csv C:\Users\Mitu\Desktop\output-excel.Csv-nti
还有别的办法吗
另外,我想将此csv发送到我们的电子邮件id。要通过powershell实现这一点,需要做些什么?我想说,这样做的最佳方式是在不增加系统负载的情况下,快速、公正地给您带来结果 话虽如此,有几件事我不确定自己是否理解。这是最后一秒的总可用RAM和CPU利用率的时间点快照-我不确定数据是否特别有用。即使使用几片Chrome浏览器,也能彻底改变这种状况 今天,当我们的一位技术人员想要类似的东西时(一些服务器配置错误的NIC),我帮他编写了一个非常类似的脚本——除了他给它提供了一个450台机器的列表,它远程执行WMI查询。我也喜欢用 最后,我个人不喜欢通过电子邮件发送这些数据——有人将不得不阅读所有这些电子邮件,并采取行动。我宁愿将其写入SQL数据库,或者至少将其记录到文件共享的CSV中 说了这么多-给它提供一个计算机名列表,用电子邮件地址和SMTP服务器更新最后一行,并用一个拥有远程计算机权限(…和在服务器上发送电子邮件的权限)的帐户运行它,它应该在所有计算机上运行WMI查询,将结果放入一个CSV文件中,然后寄给你
$computers = Get-Content -Path "ListOfcomputers.txt"
foreach ($computer in $computers) {
$Memory = Get-WmiObject win32_operatingsystem -ComputerName $computer| Select-Object @{Name = "MemoryUsage"; Expression = {"{0:N2}" -f ((($_.TotalVisibleMemorySize - $_.FreePhysicalMemory)*100)/ $_.TotalVisibleMemorySize) }}
$CPU = Get-WmiObject win32_processor | Select-Object -property LoadPercentage
$Props = @{"Memory"= $Memory.MemoryUsage ; "CPU Utilization" = $CPU.LoadPercentage}
$Mydata = New-Object -TypeName psobject -Property $Props
$MyData
$MYdata | Export-Csv "output-excel.csv" -Append
}
Send-MailMessage -From 'Script <Script@Example.com>' -To 'User <user@Example.com>', 'User 2 <user2@Example.com>' -Subject 'Sending the Report' -Body "Here's the report" -Attachments "output-excel.csv" -SmtpServer 'smtp.example.com'
$computers=获取内容-路径“ListOfcomputers.txt”
foreach($computers in$computers){
$Memory=Get WmiObject win32_operatingsystem-ComputerName$computer | Select Object@{Name=“MemoryUsage”;Expression={{0:N2})-f(($.TotalVisibleMemorySize-$.FreePhysicalMemory)*100)/$\TotalVisibleMorySize)}
$CPU=获取WmiObject win32|处理器|选择对象-属性加载百分比
$Props=@{“内存”=$Memory.MemoryUsage;“CPU利用率”=$CPU.LoadPercentage}
$Mydata=New Object-TypeName psobject-Props属性$Props
$MyData
$MYdata |导出Csv“输出excel.Csv”-追加
}
发送邮件-从“脚本”-到“用户”,“用户2”-主题“发送报告”-正文“报告在这里”-附件“输出excel.csv”-SmtpServer”smtp.example.com
Excel和csv是完全不同的东西。