如何将多个服务器的 PowerShell 输出合并到单个 csv

问题描述 投票:0回答:2

我需要从下面的代码中提取报告,现在我在每个服务器上分别运行它。

是否可以将不同服务器的所有输出合并到一个 csv 文件中或直接发送到我的电子邮件。

在哪里定义服务器名称? 如何在每个输出中显示服务器名称? 如何组合并获得单个输出?

Get-ADSyncToolsRunHistory | Where {$_.RunProfileName -match "Delta Import"} | Select-Object -Index 0, 1 | Format-Table StartDate, EndDate, ConnectorName, RunProfileName, Result
Get-ADSyncToolsRunHistory | Where {$_.RunProfileName -match "Delta Synchronization"} | Select-Object -Index 0, 1 | Format-Table StartDate, EndDate, ConnectorName, RunProfileName, Result
Get-ADSyncToolsRunStepHistory | Where {$_.RunProfileName -match "Full Import"} | Select-Object -Index 0, 1 | Format-Table StartDate, EndDate, ConnectorName, RunProfileName, StepResult
Get-ADSyncToolsRunStepHistory | Where {$_.RunProfileName -match "Full Synchronization"} | Select-Object -Index 0, 1 | Format-Table StartDate, EndDate, ConnectorName, RunProfileName, StepResult


azure powershell azure-powershell powershell-remoting azure-connect
2个回答
0
投票

您可以从本地执行此操作,首先: 在servers.txt 文件中 - 逐行添加您的服务器主机名,例如

server1
server2
$servers = Get-Content "c:\temp\servers.txt"

$Report = foreach ($server in $servers){
    Invoke-Command -ComputerName $server -ScriptBlock{
        Get-ADSyncToolsRunHistory | Where {$_.RunProfileName -match "Delta Import"} | Select-Object @{N='ServerName';E={"$env:COMPUTERNAME"}},StartDate, EndDate, ConnectorName, RunProfileName, Result
    }
}

$Report|Export-Csv "c:\temp\DeltaImport.csv" -NoTypeInformation

在使用 Invoke-Command 之前,我建议您先浏览一下此链接: https://4sysops.com/archives/use-powershell-invoke-command-to-run-scripts-on-remote-computers/


0
投票

请分享导出多服务器时间同步报告的脚本以及需要运行的w32tm /query /status命令

© www.soinside.com 2019 - 2024. All rights reserved.