我有两个 powershell cmdlet 来生成进程报告和服务报告。
例如:Get-process 和 Get-services
我知道export-csv c:\test.csv会将结果导出到 Excel 表。
但是我需要将第一个 cmdlet 的结果导出到同一个 csv 文件的第一个工作表和第二个 cmdlet 到第二个工作表。
我该怎么做呢?
我有两个 powershell cmdlet 来生成进程报告和服务报告。
例如:Get-process 和 Get-services
我知道export-csv c:\test.csv会将结果导出到 Excel 表。
但是我需要将第一个 cmdlet 的结果导出到同一个 csv 文件的第一个工作表和第二个 cmdlet 到第二个工作表。
我该怎么做呢?
IMO 最好的选择就是使用 excel 自动化。例如 ConvertTo-Excel.ps1:
param (
[ValidatePattern('\.csv$')]
[ValidateScript({
Test-Path $_
})]
[string[]]$Path
)
$FullPath = $Path | ForEach-Object {
(Resolve-Path $_).ProviderPath
}
$First, $Rest = $FullPath
$Excel = New-Object -ComObject Excel.Application
$Book = $Excel.Workbooks.Open($First)
foreach ($Item in $Rest) {
$Next = $Excel.Workbooks.Open($Item)
$Next.ActiveSheet.Move($Book.ActiveSheet)
}
$Excel.Visible = $true
您可以使用 .\ConvertTo-Excel.ps1 -Path .\services.csv, .\process.csv, ....csv 运行上述脚本,并将所有 csv 以相反的顺序组合在一起。
HTH 巴特克