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

如何在PowerShell中将多组ADSyncTools结果导出为单个CSV表格

在PowerShell中合并ADSyncToolsRunstepHistory查询结果并导出为CSV

优化思路

原代码多次重复调用Get-ADSyncToolsRunstepHistory,效率偏低。我们可以合并查询条件,一次性获取所有目标记录,统一处理后导出为单个CSV文件。

实现代码

# 一次性获取所有符合条件的历史记录,合并匹配规则并按类型分组取前2条
$mergedHistory = Get-ADSyncToolsRunstepHistory | 
    Where-Object {
        $_.RunProfileName -match "Delta Import|Delta Synchronization|Full Import|Full Synchronization"
    } | 
    Group-Object -Property RunProfileName | 
    ForEach-Object {
        $_.Group | Select-Object -Index 0, 1
    } | 
    Select-Object @{N='ServerName';E={"$env:COMPUTERNAME"}} ,StartDate, EndDate, ConnectorName, RunProfileName, StepResult

# 导出到指定路径的CSV文件,路径可自行修改
$mergedHistory | Export-Csv -Path "C:\ADSync_Run_History.csv" -NoTypeInformation -Encoding UTF8

代码说明

  • 合并查询条件:用正则表达式一次性匹配所有需要的RunProfileName类型,避免重复调用Get-ADSyncToolsRunstepHistory,提升执行效率。
  • 分组取前2条:通过Group-Object按RunProfileName分组,再对每组单独取前2条记录,和原代码的Select-Object -Index 0,1效果一致。
  • 导出配置:-NoTypeInformation避免CSV头部添加冗余的类型信息,-Encoding UTF8确保文件在不同环境下的编码兼容性。

简化管道写法

如果不需要保留中间变量,也可以直接用管道串联完成所有操作:

Get-ADSyncToolsRunstepHistory | 
    Where-Object {
        $_.RunProfileName -match "Delta Import|Delta Synchronization|Full Import|Full Synchronization"
    } | 
    Group-Object -Property RunProfileName | 
    ForEach-Object {
        $_.Group | Select-Object -Index 0, 1
    } | 
    Select-Object @{N='ServerName';E={"$env:COMPUTERNAME"}} ,StartDate, EndDate, ConnectorName, RunProfileName, StepResult |
    Export-Csv -Path "C:\ADSync_Run_History.csv" -NoTypeInformation -Encoding UTF8

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 18:03:16