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

如何将多字段服务器信息合并为格式化单字符串传入Pscribo?

解决思路

方法1:格式化字符串为指定格式

通过ForEach-Object遍历$msg集合,用PowerShell格式化字符串语法控制列宽,生成符合要求的字符串数组:

# 生成格式化后的字符串数组
$formattedLines = $msg | ForEach-Object {
    # {0,-12} 表示第一个参数左对齐占12字符;{1,-6} 第二个参数左对齐占6字符,可按需调整宽度
    "{0,-12} {1,-6} {2}" -f $_.ServerName, $_.Status, $_.Message
}

# 传入Pscribo输出报告
$report = New-PScriboDocument
$formattedLines | ForEach-Object { $report | Add-PScriboParagraph -Text $_ }
$report | Export-PScriboDocument -Path .\ServerStatusReport.docx

方法2:直接使用Pscribo表格功能(推荐)

Pscribo原生支持表格渲染,无需手动格式化字符串,直接传入对象集合并指定列即可,排版更规范美观:

$report = New-PScriboDocument
# 添加表格,指定要显示的属性列,可自定义表头文本
$report | Add-PScriboTable -InputObject $msg `
    -Columns ServerName, Status, Message `
    -Headers "服务器名称", "状态", "消息" `
    -Style LightGridAccent1 # 可选:指定表格样式

$report | Export-PScriboDocument -Path .\ServerStatusReport.docx

方法3:给对象添加格式化文本属性

如果需要保留原对象结构同时增加格式化文本字段,可通过计算属性实现:

$msgWithFormattedText = $msg | Select-Object *, @{
    Name = "FormattedLine"
    Expression = {"{0,-12} {1,-6} {2}" -f $_.ServerName, $_.Status, $_.Message}
}

# 提取格式化文本传入Pscribo
$report = New-PScriboDocument
$msgWithFormattedText.FormattedLine | ForEach-Object {
    $report | Add-PScriboParagraph -Text $_
}
$report | Export-PScriboDocument -Path .\ServerStatusReport.docx

补充说明

直接传入$msg到Pscribo时字段为空,大概率是因为Pscribo默认未自动识别对象的自定义属性,明确指定列(表格方式)或转换为字符串后传入即可解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 10:10:11