想把所有的输出都集合到一个变量中去,怎么解决呢。例如下面这段代码,想把所有的输出都集中到一个变量 result ,然后用这个作为一封邮件的body。
麻烦各位大神了。
$serverList = "127.0.0.1" $result = foreach ($Server in $ServerList) { #服务器CPU、内存、硬盘使用信息 $cpu = gwmi –computername $Server win32_Processor $men = gwmi -ComputerName $Server win32_OperatingSystem $Havecpu = "{0:0.0} %" -f $cpu.LoadPercentage $Allmen = "{0:0.0} MB" -f ($men.TotalVisibleMemorySize / 1KB) $Permem = "{0:0.0} %" -f ((($men.TotalVisibleMemorySize-$men.FreePhysicalMemory)/$men.TotalVisibleMemorySize)*100) Write-Host "服务器$Server 当前系统状态信息如下:" -ForegroundColor Red Write-Host "============================================================" Write-Host "CPU利用率: $Havecpu" -ForegroundColor Green Write-Host "内存总数:$Allmen" -ForegroundColor Green Write-Host "内存使用率:$Permem" `n -ForegroundColor Green Write-Host "============================================================" } Write-Host $result
2 Answers
Best Answer
PS> $result= New-Object system.text.stringbuilder
PS> $result.AppendLine("Hello") | out-null
PS> $result.AppendLine("我的机器名:{0}" -f $env:COMPUTERNAME ) | out-null
PS> $result.ToString()
Hello
我的机器名:HOME-WIN8
这样确实可以达到目的,但是这个模块的独立性就很不强了。
希望还是能够把它作为个单独变量放着。如结构体,对象什么的。
你要让它模块化起来,也还有个办法。参考这篇文章:http://www.pstips.net/new-object-by-new-module.html然后把你所有的信息模块化起来,在你的模块中定义一个function,比如toString()最后在发送邮件时,就可以调用了。