如何使用PowerShell将foreach循环的结果传递到csv文件中

时间:2014-02-05 10:53:41

标签: sharepoint 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")
             {
                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

2 个答案:

答案 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

您还可以使用脚本块调用(在&{}而不是$()中包装循环)