csv PowerShell代码中未显示的Active Directory组列表

k7fdbhmy  于 2023-02-14  发布在  Shell
关注(0)|答案(1)|浏览(148)

我为每个用户输入CSV格式的组列表,并尝试使用PowerShell代码创建用户。
下面是PowerShell代码:

- name: Change group for AD users
    ansible.windows.win_powershell: 
      script: |     
        [CmdletBinding()]
        param (
            [array]
            $datalist
        )

        $output = foreach ($user in $datalist) {
          $name = $user.SamAccountName
          $groups = $user.Groups
          $users = Get-ADUser -Filter "SamAccountName -eq '$name'" 
          Get-ADUser -Filter "SamAccountName -eq '$name'" -Properties MemberOf | ForEach-Object {$_.MemberOf | Remove-ADGroupMember -Members $users -Confirm:$false}
          Add-ADGroupMember -Identity $groups -Members $users
        }

      parameters:
        datalist: "{{ hostvars.localhost.list }}"

我最终得到这个错误:

"message": "Cannot convert 'System.Object[]' to the type 'Microsoft.ActiveDirectory.Management.ADGroup' required by parameter 'Identity'. Specified method is not supported."

还尝试了'$groups'

"message": "Cannot find an object with identity: '$groups' under: 'DC=adexample,DC=local'.",

"$groups"

"message": "Cannot find an object with identity: 'CN=GroupA,OU=Groups,DC=adexample,DC=local CN=Test Group,OU=Groups,DC=adexample,DC=local' under: 'DC=adexample,DC=local'.",

下面是我如何将组列表输入到CSV文件中:
| 组别|
| - ------|
| CN =组A,OU =组,DC =示例,DC =本地;CN =测试组,OU =组,DC =示例,DC =本地|
| CN =组A,OU =组,DC =示例,DC =本地;CN =测试组,OU =组,DC =示例,DC =本地|
编写$groups的正确方法是什么,这样我的组列表才能正确输出?

ego6inou

ego6inou1#

$csvFile = 'path\to\csv\file.csv'

$users = Import-Csv -Path $csvFile

foreach ($user in $users) {
    $samAccountName = $user.SamAccountName
    $givenName = $user.GivenName
    $surname = $user.Surname
    $password = $user.Password
    $email = $user.Email
    $groups = $user.Groups -split ","

    $securePassword = ConvertTo-SecureString $password -AsPlainText -Force
    New-ADUser -SamAccountName $samAccountName -GivenName $givenName -Surname $surname -DisplayName "$givenName $surname" -EmailAddress $email -AccountPassword $securePassword -Enabled $true

    foreach ($group in $groups) {
        Add-ADGroupMember -Identity $group -Members $samAccountName
    }
}

CSV示例
示例帐户名、给定名称、姓氏、密码、电子邮件、组用户1、chand、komara、密码1、用户1@example.com、组1、组2用户2、bhuvan、unnava、密码2、用户2@example.com、组2、组3
对于$users数组中的每个用户,代码使用New-ADUser cmdlet和指定的SamAccountName、GivenName、Surname、DisplayName、EmailAddress和帐户密码创建一个新的Active Directory用户。然后使用Add-ADGroupMember cmdlet将该用户添加到指定的组。

相关问题