将Powershell输出导出为CSV

时间:2014-11-19 21:49:47

标签: powershell recursion foreach export-to-csv

我有以下代码用于获取用户名列表并输出用户名的CSV报告 - GroupMembership。在命令行,输出看起来很棒,因为我在左侧获得“名称”并在右侧递归“组成员身份”(请参阅​​图片http://i.stack.imgur.com/zLxUR.jpg获取命令行输出,抱歉无法发布嵌入式Pics)

我希望将输出写入具有相同格式的CSV文件,即一列中的用户名和第二列中的GroupMemberships。原始代码来自:http://thesurlyadmin.com/2013/03/21/get-a-users-group-memberships/,只有一些小的更改。

Param (
   [Parameter(Mandatory=$true,ValueFromPipeLine=$true)]
   [Alias("ID","Users")]
   [string[]]$User
)
Begin {
   Try { Import-Module ActiveDirectory -ErrorAction Stop }
   Catch { Write-Host "Unable to load Active Directory module, is RSAT installed?"; Break }
}

Process {
    ForEach ($U in $User)
   {  $UN = Get-ADUser $U -Properties MemberOf
      $Groups = ForEach ($Group in ($UN.MemberOf))
      {   (Get-ADGroup $Group).Name
      }
      $Groups = $Groups | Sort
      ForEach ($Group in $Groups)
      {  New-Object PSObject -Property @{
            Name = $UN.Name
            Group = $Group
         }
      }
   }
}

我尝试使用这个“$ PSObject | Export-CSV C:\ Scripts \ GroupMembershipList.csv”,但它只将第一行写入CSV,之后没有任何内容。

1 个答案:

答案 0 :(得分:1)

内特,

在Powershell v3.0中,Export-CSV cmdlet引入了-Append参数。

参考:http://technet.microsoft.com/en-us/library/hh849932.aspx

不知道您正在使用的Powershell版本,这可能需要您更新以利用新功能。

在我自己的情况下,如果我忘记了-Append到我的CSV,我通常会看到相反的问题;我只会以最后条目结束而不是第一条。

我不会声称这是你的修复,但可能值得一试......

示例:$PSObject | Export-CSV C:\Scripts\GroupMembershipList.csv -Append