Powershell 将成员组属性从AD导入.csv
我正在使用Windows XP、Powershell 2版下的ActiveRoles命令行管理程序从AD中检索组数据并将其导出到csv文件。除了获取成员列表之外,其他一切都很好。由于太长,程序每次都在成员列系统下的excel单元格中写入。字符串[]。我如何让它在那里写入整个列表,可能吗?实际上,我可以只使用成员的名称,而不需要整个连接路径。是否可以从组字段中获取成员的唯一名称Powershell 将成员组属性从AD导入.csv,powershell,csv,active-directory,export,quest,Powershell,Csv,Active Directory,Export,Quest,我正在使用Windows XP、Powershell 2版下的ActiveRoles命令行管理程序从AD中检索组数据并将其导出到csv文件。除了获取成员列表之外,其他一切都很好。由于太长,程序每次都在成员列系统下的excel单元格中写入。字符串[]。我如何让它在那里写入整个列表,可能吗?实际上,我可以只使用成员的名称,而不需要整个连接路径。是否可以从组字段中获取成员的唯一名称 get-QADGroup -SearchRoot 'ou=User,ou=Groups,ou=PL,dc=test,dc
get-QADGroup -SearchRoot 'ou=User,ou=Groups,ou=PL,dc=test,dc=com'| Select-Object -property name,sAMAccountName,description,groupType,member|Export-Csv -path Y:\csv\groups.csv
我没有访问quest cmdlet的权限,因此我将提供一个基于
activedirectory
cmdlet的解决方案
Get-ADUser -Filter * -SearchBase "OU=Employees,DC=Domain,DC=Local" -Properties memberof |
Select-Object name,@{Name="Groups";Expression={$_.MemberOf |
ForEach-Object{(Get-ADGroup -Identity $_).Name + ";"}}} |
Export-Csv C:\temp\TEST.CSV -Append
要理解这一点,请通过以下行:
的成员,并获得该组的友好名称(memberof returnsDiscrimitedName
)。在每组末尾添加一个“”;“
”,以避免干扰稍后制作的CSV李>
附加到csv文件李>
为了简洁起见,我没有包括Select对象
语句中包含的所有额外属性。您显然需要根据需要重新添加这些内容
由于您具有使用Quest cmdlet的权限,您可以将select语句中的成员更改为以下内容:
@{Name="Groups";Expression={$_.member | ForEach-Object{"$_;"}}}
我无法测试这是否有效。它基于这样一种假设,即成员包含一个简单的名称,即区分名称Ok,正如Matt建议的那样,您希望在Select语句中使用一个表达式。我会用这样的方式:
@{l="Members";e={$_.Members -join ", "}}
当插入到一个衬里中时,看起来像:
get-QADGroup -SearchRoot 'ou=User,ou=Groups,ou=PL,dc=test,dc=com'| Select-Object -property name,sAMAccountName,description,groupType,@{l='Members';e={$_.member -join ", "}}|Export-Csv -path Y:\csv\groups.csv -NoTypeInfo
我还在导出中添加了-NoTypeInfo,以跳过恼人的引导行,告诉您它是PSCustomObject或类似的东西,实际上只是获取您的数据(和标题)。是否使用Select Object-ExpandProperty而不是Select Object-Property?Select Object:Cannot convert'System.Object[]参数“ExpandProperty”所需的类型“System.String”。不支持指定的方法。请提供所需输出的示例。您希望它为每个组输出一个文件,还是将所有组放在一个文件中?我有列组名、组描述、组成员。在每个组成员单元中,我有特定组的成员一个接一个地被coma划分,例如tomP、andrewN、jessicaR等(本例为一个单元)不幸的是,我不得不使用Quest AD shell,因为我无法安装Active Directory模块。我对select语句中需要更改的内容进行了有根据的猜测,以使此逻辑正常工作。我只是不能亲自测试语法,看看输出是什么样子。