2014-02-05 2 views
0

У меня есть следующие PowerShell скрипты, перебирает все элементы списка и рабочие процессы, пытаясь найти старые запущенные рабочие процессыЭкспорт в CSV-файл после цикла заканчивается PowerShell

Логика в порядке, но мне нужно, чтобы иметь возможность экспортировать к csv с столбцами ListeItemUrl, ListItemName, Nr дней открытых.

$web = get-spweb https://mysite.com/sites/billing 
$list = $web.Lists["Bill Cycles"] 
$count = 0 
foreach($wf in $list.WorkflowAssociations) 
{ 
    if ($wf.Name -like "*Previous Version*") 
    { 
     Write-Host 'Bill Cycles with old workflow: ' $wf.Name 
     foreach($listitem in $list.Items) 
     { 

     if($listitem.ContentType.Name -eq "Bill Cycle") 
     { 
      $workflows = $listitem.Workflows 
      foreach($Workflow in $listitem.Workflows) 
      { 
       if($Workflow.AssociationId -eq $wf.Id) 
       { 
        $count = $count+1 
        Write-Host $listitem.Name 
        Write-Host 'https://mysite.com/sites/billing/'$listitem.Url.TrimStart(); 
        Write-Host 'Workflow opened for: ' ((Get-Date) - $Workflow.Created).Days 
       } 
      } 
     } 
     } 
    } 
} 
Write-host 'Count: ' $count 

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

ответ

1

Форматирование вывода в формате CSV - ListeItemUrl, ListItemName, NrofDaysOpened - и труба его Export-Csv командлете (Вы можете узнать больше, запустив get-help Export-Csv). Вам придется изменить Write-Host в Write-Output

+0

, который создаст один файл для каждого цикла, мне нужен один файл только –

+0

Есть несколько способов, вы можете преодолеть это. Удостоверьтесь, что вы разместили командлет export-csv в нужном месте, перенесите свой вывод в переменную, а затем в конец вашего скрипта запустите эту переменную в 'export-csv' или запустите весь скрипт (предположив, что он называется _script.ps1_) как следует: '. \ script.ps1 | expor-csv C: \ somepath \ file.csv' – Raf

Смежные вопросы