Powershell-使用CSV文件将用户添加到广告组(Quest ActiveRoles管理)

Powershell-使用CSV文件将用户添加到广告组(Quest ActiveRoles管理),powershell,csv,active-directory,quest,Powershell,Csv,Active Directory,Quest,我有一个有两列的CSV文件。第一列是广告组,第二列是广告用户列表(显示名称-非用户id) 关于如何将用户添加到相应的广告组的任何想法 e、 g.将彼得·帕克、布鲁斯·韦恩、托尼·斯塔克和史蒂夫·罗杰斯加入DG-GROUP1 我需要一个脚本,该脚本对CSV文件中的每个填充行(约2000个条目)进行重复 此外,如果它是使用Quest cmdlet编写的,我们将不胜感激 任何帮助都将不胜感激。因此,我们需要加载CSV,在组上运行ForEach循环,并在其中对每个组的用户运行另一个ForEach,以分

我有一个有两列的CSV文件。第一列是广告组,第二列是广告用户列表(显示名称-非用户id)

关于如何将用户添加到相应的广告组的任何想法

e、 g.将彼得·帕克、布鲁斯·韦恩、托尼·斯塔克和史蒂夫·罗杰斯加入DG-GROUP1

我需要一个脚本,该脚本对CSV文件中的每个填充行(约2000个条目)进行重复

此外,如果它是使用Quest cmdlet编写的,我们将不胜感激


任何帮助都将不胜感激。

因此,我们需要加载CSV,在组上运行ForEach循环,并在其中对每个组的用户运行另一个ForEach,以分号分隔。我能行。现在,我有一个函数,它的输入非常灵活,我只是复制/粘贴到这里来处理查找用户帐户的问题,因为我很懒

function Get-ADAccount {
[CmdletBinding()]
  param(
    [parameter(Position = 0,ValueFromPipeline=$True,ValueFromPipelinebyPropertyName=$True)]
      [string]$FirstName,
    [parameter(Position = 1,ValueFromPipelinebyPropertyName=$True)]
      [string]$LastName,
  [parameter(Position = 2,ValueFromPipelinebyPropertyName=$True)]
      [string]$Email
    )
#    Write-Host "First Name: $FirstName | Last Name: $LastName | Email: $Email"
Process{
    If($Email){$user = Get-ADUser -filter {mail -eq $Email} -Properties *}else{
    switch -Regex ($FirstName) {
        "^.+@.+\.(com|org|net|edu)" {$user = Get-ADUser -filter {mail -eq $_} -Properties *;break}
        "^.+,.+" {$LastName = $_.Split(",")[0];$FirstName = $_.Split(",")[1].TrimStart();$FirstName= $FirstName+"*";$user = Get-ADUser -Filter {GivenName -like $FirstName -and Surname -eq $LastName} -Properties *;break}
        ".+ .+" {$LastName = $_.substring($_.IndexOf(" ")+1,$_.Length-$_.IndexOf(" ")-1);$FirstName = $_.Split(" ")[0];$FirstName= $FirstName+"*";$user = Get-ADUser -Filter {GivenName -like $FirstName -and Surname -eq $LastName} -Properties *;break}
        ".+" {$FirstName= $FirstName+"*";$user = Get-ADUser -Filter {GivenName -like $FirstName -and Surname -eq $LastName} -Properties *}
    }}
#    if(!($user.name -gt "")){Write-Host "Searching 'GivenName -like $FirstName -and Surname -eq $LastName'";$user = Get-ADUser -Filter {GivenName -like $FirstName -and Surname -eq $LastName} -Properties *}
    if(!($user.name -gt "")){$user = "User not found."}else{foreach($phone in $user){if($phone.mobilephone -gt ""){$phone.mobilephone = "{0:(###) ###-####}" -f [int64]$($phone.mobilephone -replace "[^\d]").TrimStart("1");$phone.mobile= $phone.mobilephone}}}
    $user
}
}
$GroupsToUpdate = Import-CSV C:\Path\To\File.csv
ForEach($Group in $GroupsToUpdate){
    $Group.ApplicationApprovers.Split(";") | Get-ADAccount | ForEach{$Group.'New DG Group' | Add-QADGroupMember -Member $_.DistinguishedName}
}

手动。我将用户列表保存到一个数组中(有时该列表超过100个),然后使用一个“foreach”管道连接到Add QADGroupMember“AD Group 1”$\中。第二列是如何分隔的?或者您的列是如何分隔的?您所显示的不是CSV文件,这是它在屏幕上的外观。有点像。@TheMadTechnician抱歉,我刚做了一个图形表示。我编辑了我的问题,加入了csv文件的剪贴。第二列由分号(;)分隔。好的,我们可以使用这种格式。现在,您到目前为止使用的代码,以及任何自动执行此操作的尝试(即使是失败的代码,也有错误)都应该放在您的原始文章中。大多数常客不会回答一个问题,如果看起来你至少没有试着自己解决它。