我遇到以下语法问题,我仍然不确定这是否可行。
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
答案 0 :(得分:1)
foreach
循环不输出到管道,因此Export-CSV
可能没有任何输入。
在括号中尝试wrapping the iteration个WorkflowAssociations。
答案 1 :(得分:1)
您可以使用子表达式将foreach循环输出到pipeiline:
$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
您还可以使用脚本块调用(在&{}
而不是$()
中包装循环)