Вопрос:
У меня возникает следующая проблема синтаксиса, и я все еще не уверен, возможно ли это или нет.
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 в скобках.