【发布时间】:2017-07-08 06:08:59
【问题描述】:
我有一个来自之前回答的问题的脚本,但没有足够的声誉来发表评论。我尝试运行该脚本并遇到此错误消息:
Export-CSV:无法将 CSV 内容附加到以下文件:C:\users.csv。附加的对象没有对应于以下列的属性:用户;组。要继续使用不匹配的属性,请添加 -Force 参数,然后重试该命令。
如何调试此脚本以解决此问题?
Function Get-ADGroupsRecursive{
Param([String[]]$Groups)
Begin{
$Results = @()
}
Process{
ForEach($Group in $Groups){
$Results+=$Group
ForEach($Object in (Get-ADGroupMember $Group|?{$_.objectClass -eq "Group"})){
$Results += Get-ADGroupsRecursive $Object
}
}
}
End{
$Results | Select -Unique
}}
import-module activedirectory
$users = get-aduser -Filter {Name -Like "*"} -Searchbase "OU=Sample Accounts,DC=domain,DC=com" -Properties MemberOf | Where-Object { $_.Enabled -eq 'True' }
$targetFile = "C:\users.csv"
rm $targetFile
Add-Content $targetFile "User;Group"
foreach ($user in $users)
{
$Groups = $User.MemberOf
$Groups += $Groups | %{Get-ADGroupsRecursive $_}
$Groups | %{New-Object PSObject -Property @{User=$User;Group=$_}}|Export-CSV $targetfile -notype -append
}
【问题讨论】:
-
删除这一行:
Add-Content $targetFile "User;Group"并让 PowerShell 处理 CSV 标头。 -
Export-csv 尝试匹配您手动添加到 $targetFile 的行,默认情况下不起作用 -Delimiter 是逗号,值是双引号。所以它将内容解释为一个属性
User;Group -
@MarkWragg 该脚本现在可以工作,但我最终得到以下错误消息:
Get-AdGroupMember exceeding limit。这个限制有解决方法吗? -
你试过什么?我建议您先搜索解决方案。
-
我相信我已经解决了自己的问题。此脚本无法在包含嵌套 OU 的 OU 上正确执行。因此,似乎最好的方法是在嵌套 OU 上执行之前编辑脚本的
searchbase。
标签: powershell active-directory powergui