Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要将CPU和内存信息发送到Excel工作表_Excel_Powershell - Fatal编程技术网

需要将CPU和内存信息发送到Excel工作表

需要将CPU和内存信息发送到Excel工作表,excel,powershell,Excel,Powershell,我正在自动检查一些windows服务器的运行状况。我对PowerShell非常陌生(从今天开始) 我希望windows服务器的CPU和内存利用率立即记录在Excel工作簿的不同工作表中。在谷歌搜索并遵循文档之后,我找到了使用Win32_处理器和Win32_operatingsystem类检索此数据的命令 我使用的是Export-CSV cmdlet,它直接将输出复制到excel 我使用New Object cmdlet创建了一个psobject,以将两个输出都添加到属性中,然后粘贴到excel中

我正在自动检查一些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是完全不同的东西。