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

PowerShell中Compare-Object的自定义SideIndicator如何正确导出显示

问题原因

你使用了-PassThru参数,导致Compare-Object直接返回了原始的XML行字符串,你给字符串附加的SideIndicator属于动态属性,直接通过>重定向写入文件时,PowerShell只会输出字符串本身的内容,不会输出附加属性,因此看不到自定义标识。

解决方法

去掉-PassThru参数,直接处理Compare-Object默认返回的对比结果对象,将差异标识和行内容拼接后再写入文件即可。

修复后代码

$NAS = Get-Content C:\temp\Gold_Copy.xml
$Snapshot = Get-Content C:\temp\QJ07312433_10_19_2021_snapshot.xml

Compare-Object -ReferenceObject $NAS -DifferenceObject $Snapshot |
    ForEach-Object {
        $tag = switch ($_.SideIndicator) {
            '=>' { '【仅存在于Snapshot】' }
            '<=' { '【仅存在于NAS】' }
        }
        # 可自行调整标识和内容的拼接顺序
        "$tag $($_.InputObject)"
    } | Out-File -FilePath C:\temp\diff.txt -Encoding UTF8

补充说明

使用Out-File指定UTF8编码可以避免生成的txt文件出现乱码,比默认的>重定向兼容性更好。如果需要保留原英文标识,直接替换switch里的中文内容即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 18:57:00