Как передать результат цикла foreach в файл csv с помощью PowerShell

Вопрос: У меня возникает следующая проблема синтаксиса, и я все еще не уверен, возможно ли это или нет. An empty pipe element is not allowed. Скрипт $web = get-spweb https://xx.com/sites/billing $list = $web.Lists["Bill Cycles"] foreach($wf in $list.WorkflowAssociations) { if ($wf.Name -like "*2013*") { foreach($listitem in $list.Items) { foreach($Workflow in $listitem.Workflows) { if($wf.InternalStatus -ne "Completed") {

Вопрос:

У меня возникает следующая проблема синтаксиса, и я все еще не уверен, возможно ли это или нет.

An empty pipe element is not allowed.

Скрипт

$web = get-spweb https://xx.com/sites/billing $list = $web.Lists[«Bill Cycles»] foreach($wf in $list.WorkflowAssociations) { if ($wf.Name -like «*2013*») { foreach($listitem in $list.Items) { foreach($Workflow in $listitem.Workflows) { if($wf.InternalStatus -ne «Completed») { if($Workflow.AssociationId -eq $wf.Id) { New-Object psobject -Property @{ «InternalStatus» = $wf.InternalStatus «WFName» = $wf.Name «ListItemName» = $listitem.Name «Url» = $listitem.Url «Days» = ((Get-Date) — $Workflow.Created).Days } } } } } } } | Select-Object InternalStatus, WFName, ListItemName, Url, Days | Export-CSV $output -Delimiter ‘,’ -NoTypeInformation Лучший ответ:

Вы можете сделать вывод циклы foreach в трубопровод с помощью подвыражения:

$web = get-spweb https://xx.com/sites/billing $list = $web.Lists[«Bill Cycles»] $(foreach($wf in $list.WorkflowAssociations) { if ($wf.Name -like «*2013*») { foreach($listitem in $list.Items) { foreach($Workflow in $listitem.Workflows) { if($wf.InternalStatus -ne «Completed») { if($Workflow.AssociationId -eq $wf.Id) { New-Object psobject -Property @{ «InternalStatus» = $wf.InternalStatus «WFName» = $wf.Name «ListItemName» = $listitem.Name «Url» = $listitem.Url «Days» = ((Get-Date) — $Workflow.Created).Days } } } } } } }) | Select-Object InternalStatus, WFName, ListItemName, Url, Days | Export-CSV $output -Delimiter ‘,’ -NoTypeInformation

Вы также можете использовать вызов scriptblock (оберните цикл в &{} вместо $())

Ответ №1

Цикл foreach не выводится в конвейер, поэтому, вероятно, Export-CSV не имеет никакого ввода.

Попробуйте обернуть итерацию WorkflowAssociations в скобках.

Оцените статью
Добавить комментарий