Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 将成员组属性从AD导入.csv_Powershell_Csv_Active Directory_Export_Quest - Fatal编程技术网

Powershell 将成员组属性从AD导入.csv

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

我正在使用Windows XP、Powershell 2版下的ActiveRoles命令行管理程序从AD中检索组数据并将其导出到csv文件。除了获取成员列表之外,其他一切都很好。由于太长,程序每次都在成员列系统下的excel单元格中写入。字符串[]。我如何让它在那里写入整个列表,可能吗?实际上,我可以只使用成员的名称,而不需要整个连接路径。是否可以从组字段中获取成员的唯一名称

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
要理解这一点,请通过以下行:

  • 应该是不言自明的。获取定义的OU中的所有用户。您需要更改此项以满足您的需要
  • 在到达组之前,select语句显示正常
  • 从上一行继续的内容是在每个组中循环,每个组中都有一个单独的用户是
    的成员,并获得该组的友好名称(memberof returns
    DiscrimitedName
    )。在每组末尾添加一个“
    ”;“
    ”,以避免干扰稍后制作的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语句中需要更改的内容进行了有根据的猜测,以使此逻辑正常工作。我只是不能亲自测试语法,看看输出是什么样子。