You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将PowerShell中$processMemoryUsage变量输出记录到日志?

问题解决:PowerShell对象无法写入日志文件的处理方案

问题根源

$processMemoryUsage是通过Select-Object生成的自定义对象集合(PSCustomObject数组),直接将其与字符串拼接或写入文件时,PowerShell不会自动采用控制台的表格格式化输出,而是输出对象的默认字符串表示(比如System.Management.Automation.PSCustomObject),所以日志里看不到预期的内存数据。Write-Host能在控制台显示表格是因为控制台会自动对对象应用格式化规则,但写入文件时没有这个处理流程。

解决方案

方法1:将对象转为控制台格式的字符串(推荐)

使用Out-String命令把对象集合转换成和控制台输出一致的字符串,再写入日志。修改后的核心代码如下:

# 建议用Get-CimInstance替代已弃用的Get-WmiObject
$processMemoryUsage = Get-CimInstance WIN32_PROCESS | Sort-Object -Property ws -Descending | Select-Object -first 5 processname, @{Name="Mem Usage(MB)";Expression={[math]::round($_.ws / 1mb*1.7)}}, @{Name="Mem Usage(%)";Expression={[math]::round($_.ws / 1mb*1.7)/100}} 
$currentTime = Get-Date -format "dd-MMM-yyyy HH:mm:ss"

Write-Host "Util is ok of test"   
$logfilepath="C:\Users\lapasaca\Downloads\Memorylog.txt"
# 将对象转为格式化字符串,再组合时间信息
$processStr = $processMemoryUsage | Out-String
$logmessage = "=== $currentTime ==`n$processStr`n"
$logmessage >> $logfilepath

方法2:自定义单行记录格式

如果不需要表格,而是要每行一条结构化记录,可以遍历对象拼接字符串:

$processMemoryUsage = Get-CimInstance WIN32_PROCESS | Sort-Object -Property ws -Descending | Select-Object -first 5 processname, @{Name="Mem Usage(MB)";Expression={[math]::round($_.ws / 1mb*1.7)}}, @{Name="Mem Usage(%)";Expression={[math]::round($_.ws / 1mb*1.7)/100}} 
$currentTime = Get-Date -format "dd-MMM-yyyy HH:mm:ss"

Write-Host "Util is ok of test"   
$logfilepath="C:\Users\lapasaca\Downloads\Memorylog.txt"
# 写入时间标记
"=== $currentTime ===" >> $logfilepath
# 遍历每个进程对象,拼接自定义格式的字符串
foreach ($proc in $processMemoryUsage) {
    "$($proc.processname) | 内存占用(MB): $($proc.'Mem Usage(MB)') | 内存占比(%): $($proc.'Mem Usage(%)')" >> $logfilepath
}
"" >> $logfilepath # 空行分隔不同时间的记录

修改后日志示例(方法1)

=== 05-Oct-2024 14:30:00 ==
ProcessName        Mem Usage(MB) Mem Usage(%)
-----------        ------------- ------------
OUTLOOK.EXE                 1368        13.68
Memory Compression           628         6.28
Teams.exe                    582         5.82
msedge.exe                   569         5.69
chrome.exe                   548         5.48

内容的提问来源于stack exchange,提问作者Vida Vida

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 06:00:16