2012-04-21 2 views
1

У меня есть два командлета powershell для генерации отчет о процессе и отчет об услугах.Добавление результатов на новый лист Excel с использованием poweshell 1.0

например: Get-процесс и Get-услуги

Я знаю экспорт CSV c: \ test.csv будет экспортировать результат отличиться листов.

Но мне нужен результат первого командлета для экспорта на первый лист и второй командлет на второй лист того же файла csv.

Как это сделать?

+2

Короткий ответ: Вы не можете сделать это с помощью 'Export-Csv', поскольку .csv представляет собой обычный текстовый файл, который не поддерживает несколько листов, как в реальной книге Excel. – Filburt

+0

@Filburt Могу ли я экспортировать его в Excel? или я могу добавить к существующему набору результатов и поместить его в тот же лист в csv? – Rockstart

+0

Должно быть возможно добавить второй результирующий набор к тому же самому csv - возможно, потребуется настроить (добавив несколько пустых строк), чтобы выглядеть красиво в Excel. В противном случае вам придется создать настоящую рабочую книгу .xslx и заполнить результирующие наборы с помощью автоматизации Office. – Filburt

ответ

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 в обратном порядке.

НТН Bartek