【问题标题】:Powershell - Using CSV file to add Users to AD Group (Quest ActiveRoles Management)Powershell - 使用 CSV 文件将用户添加到 AD 组(Quest ActiveRoles 管理)
【发布时间】:2014-10-15 18:28:10
【问题描述】:

我有一个包含两列的 CSV 文件。第一列是 AD 组,第二列是 AD 用户列表(显示名称 - 不是用户 ID)

关于如何将用户添加到其相应的 AD 组的任何想法。

例如将 Peter Parker、Bruce Wayne、Tony Stark 和 Steve Rogers 添加到 DG-GROUP1。

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

另外,如果它是使用 Quest cmdlet 编写的,将不胜感激。

任何帮助将不胜感激。

【问题讨论】:

  • 手动。我将用户列表保存到一个数组中(有时列表超过 100 个),然后使用通过管道传输到 Add-QADGroupMember "AD Group 1" $_ 的“foreach”。
  • 第二列是如何分隔的?或者你的列是如何分隔的?您显示的不是 CSV 文件,这就是它在屏幕上的样子。种。
  • @TheMadTechnician 抱歉,我刚开始只是做了一个图形表示。我编辑了我的问题以包含 csv 文件的片段。第二列由分号 (;) 分隔。
  • 好的,这是我们可以使用的格式。现在,您到目前为止使用的代码,以及任何自动化的尝试(即使是失败的代码,有错误)都应该放入您的原始帖子中。如果问题看起来不像您至少尝试过自己解决,那么大多数常客都不会回答。

标签: powershell csv active-directory quest


【解决方案1】:

因此,我们需要加载 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}
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-17
    相关资源
    最近更新 更多