【问题标题】:Powershell exporting csv issuePowershell导出csv问题
【发布时间】:2018-06-22 01:34:22
【问题描述】:
<# 
Run the Script On Active Directory to remove disabled users from All Groups and Set description what user was member of group if you have all the disable users in an OU. 
Just add -SearchBase "OU=disabled,DC=domain,DC=com" after  -filter 'enabled -eq $false' 

#> 
import-module activedirectory 
$users=get-aduser -filter 'enabled -eq $false' -SearchBase "OU=Lockdown,DC=home,DC=ac,DC=uk" -Properties samaccountname,memberof  |select samaccountname, @{n=’MemberOf’; e= { ( $_.memberof | % { (Get-ADObject $_).Name }) -join “,” }}  


#set description 
Foreach ($user in $users) 
{ Set-ADUser $user.samaccountname -Replace @{info="Was a member of :- $($user.memberof)"} 
# Export the list to csv
$Groups = (Get-ADPrincipalGroupMembership -Identity $user.SamAccountName | Select-Object -ExpandProperty name) -join ','

get-aduser $user.SamAccountName -properties memberof,samaccountname,givenname,surname | select samaccountname, @{name="Groups";expression={$Groups}} | export-csv "C:\Users\Administrator\Desktop\grpsss.csv" -Delimiter ";"



# Remove From all the Groups 
 Get-ADGroup -Filter {name -notlike "*domain users*"}  | Remove-ADGroupMember -Members $user.samaccountname -Confirm:$False  

} 


 $total = ($users).count  

 Write-Host "$total accounts have been processed..." -ForegroundColor Green 

此脚本从禁用的用户(来自禁用的 OU)中删除所有组,它将这些组的名称添加到信息字段以及具有相同信息的 csv 导出。

问题是当禁用 OU 中有许多用户时,csv 仅填充一个用户的组成员身份。问题是,我如何以 csv 格式导出所有用户及其组成员身份。所以我有一个所有已处理用户的列表。

我一直认为 export-csv 会导出 powershell 处理的所有内容?

提前感谢您的帮助。

【问题讨论】:

  • 冒个泡,猜猜你想把-Append放到export-csv "C:\Users\Administrator\Desktop\grpsss.csv" -Delimiter ";"的末尾
  • 这就像一个魅力。谢谢。

标签: powershell csv active-directory


【解决方案1】:

您的脚本尝试为每个用户导出一个 csv:

Foreach ($user in $users) {
...
get-aduser $user.SamAccountName -properties memberof,samaccountname,givenname,surname | 
  select samaccountname, @{name="Groups";expression={$Groups}} |
  export-csv "C:\Users\Administrator\Desktop\grpsss.csv" -Delimiter ";"
...
}

但是,这意味着只有在此 foreach 块中运行的最后一个用户才会将其数据写入 .csv 文件。

这是因为Export-Csv 默认会覆盖现有 .csv 文件的内容。因此,foreach 块中的每个用户都会覆盖它之前的用户。

要解决此问题,请将参数开关 -Append 添加到 Export-Csv 命令的末尾。 This will add on each users data to the end of the file rather than overwrite it 例如

Foreach ($user in $users) {
...
get-aduser $user.SamAccountName -properties memberof,samaccountname,givenname,surname | 
  select samaccountname, @{name="Groups";expression={$Groups}} |
  export-csv "C:\Users\Administrator\Desktop\grpsss.csv" -Delimiter ";" -Append
...
}

【讨论】:

  • 工作顺利,非常感谢您的详细回复,特别是强调该问题,并感谢您提供解释其工作原理的链接。再次感谢。
猜你喜欢
  • 2017-07-03
  • 1970-01-01
  • 1970-01-01
  • 2014-03-22
  • 2013-10-25
  • 1970-01-01
  • 2016-10-23
  • 1970-01-01
相关资源
最近更新 更多