输出重定向


0
wchuang asked 10 年 ago

想把所有的输出都集合到一个变量中去,怎么解决呢。例如下面这段代码,想把所有的输出都集中到一个变量 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
0
Best Answer
Mooser Lee 管理员 answered 10 年 ago
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
wchuang replied 10 年 ago

这样确实可以达到目的,但是这个模块的独立性就很不强了。

wchuang replied 10 年 ago

希望还是能够把它作为个单独变量放着。如结构体,对象什么的。

Mooser Lee 管理员 replied 10 年 ago

你要让它模块化起来,也还有个办法。参考这篇文章:http://www.pstips.net/new-object-by-new-module.html然后把你所有的信息模块化起来,在你的模块中定义一个function,比如toString()最后在发送邮件时,就可以调用了。

0
Mooser Lee 管理员 answered 10 年 ago

你要让它模块化起来,也还有个办法。参考这篇文章:https://www.pstips.net/new-object-by-new-module.html然后把你所有的信息模块化起来,在你的模块中定义一个function,比如toString()最后在发送邮件时,就可以调用了。