2012-04-21 42 views
1

我有两个PowerShell cmdlet生成进程报告服务报告使用poweshell 1.0将结果添加到新的Excel工作表中

如:获取过程和获取服务

我知道出口CSV C:\ test.csv将导出结果Excel工作表。

但我需要第一个cmdlet导出到第一个工作表和第二个cmdlet到同一csv文件的第二个工作表的结果。

我该怎么做?

+2

简短的回答:因为一个.csv是不支持多表像一个真正的Excel工作簿中的纯文本文件你不能做到这一点使用'出口型Csv'。 – Filburt 2012-04-21 16:09:02

+0

@Filburt我可以将它导出为ex​​cel吗?或者我可以追加到现有的结果集,并把它放在同一张表中的CSV? – Rockstart 2012-04-21 16:17:00

+0

应该可以将第二个结果集附加到相同的csv - 可能需要调整(添加一些空行)在Excel中看起来不错。否则,您必须创建一个真正的.xslx工作簿并使用Office自动化填充结果集。 – Filburt 2012-04-21 16:24:09

回答

3

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 鲍尔泰克

相关问题