none
Ошибочки в Add-ADGroupMember

    Вопрос

  • Коллеги, добрый день!

    Есть скрипт который мне формирует 1 переменную $users , она содержит SamAccountName пользователей, и для простоты примера допустим, в ней 3 пользователей: user1; user2; user3

    В таком коде все работает исправно:

    Add-ADGroupMember -Identity ADGroup -Members user1
    Add-ADGroupMember -Identity ADGroup -Members user2
    Add-ADGroupMember -Identity ADGroup -Members user3


    Так работать отказывается:

    Foreach ($user in $users) {
        Add-ADGroupMember -Identity ADGroup -Members $user
    }
    

    Даже так:

    $users | % {
        Add-ADGroupMember -Identity ADGroup -Members $_
    }

    И самое ужасное, даже так не работает:

    $users | % { 
        Add-ADGroupMember -Identity ADGroup -Members (Get-ADUser $_)
    }

    Ошибка:

    Get-ADUser : Cannot validate argument on parameter 'Identity'. The argument is null or an element of the argument collection contains a null value.
    At line:2 char:62
    +     Add-ADGroupMember -Identity ADGroup -Members (Get-ADUser $_)
    +                                                              ~~
        + CategoryInfo          : InvalidData: (:) [Get-ADUser], ParameterBindingValidationException
        + FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.ActiveDirectory.Management.Commands.GetADUser

    Я уже все перепробовал...

    Подскажите, в чем может быть проблема? 

    18 декабря 2018 г. 15:02

Ответы

  • судя по ошибке у вас или $users содержит что-то не то или вообще ничего не содержит.

    покажите вывод $users и $users.gettype()

    в дополнение ко всему судя по синтаксису вы можете всю пачку махом в группу добавить не заморачиваяс с циклом


    The opinion expressed by me is not an official position of Microsoft

    • Изменено Vector BCOModerator 18 декабря 2018 г. 15:43
    • Помечено в качестве ответа KazunEditor 21 декабря 2018 г. 6:53
    18 декабря 2018 г. 15:34
    Модератор

Все ответы

  • судя по ошибке у вас или $users содержит что-то не то или вообще ничего не содержит.

    покажите вывод $users и $users.gettype()

    в дополнение ко всему судя по синтаксису вы можете всю пачку махом в группу добавить не заморачиваяс с циклом


    The opinion expressed by me is not an official position of Microsoft

    • Изменено Vector BCOModerator 18 декабря 2018 г. 15:43
    • Помечено в качестве ответа KazunEditor 21 декабря 2018 г. 6:53
    18 декабря 2018 г. 15:34
    Модератор
  • Судя по всему проблема в типе данных.

    GetType для $users - systemArray, а для отдельного элемента этого массива - String

    Вот через такие костыли все работает исправно, что удивительно

    Clear-Content C:\-\users.txt
    $users_16 | Add-Content C:\-\users.txt
    Add-ADGroupMember -Identity $distribGroup -Members (Get-Content C:\-\users.txt)

    19 декабря 2018 г. 8:21
  • покажите вывод $users и посмотрите тип у одного элемента $($users[0]).gettype()

    The opinion expressed by me is not an official position of Microsoft

    19 декабря 2018 г. 8:35
    Модератор
  • покажите вывод $users и посмотрите тип у одного элемента $($users[0]).gettype()

    The opinion expressed by me is not an official position of Microsoft

    Так я выше написал, что тип - String

    Вывод показать не получится ибо это корпоративная информация, но могу заверить, что там нет пустых строк и кириллицы. Это массив из SamAccountName

    19 декабря 2018 г. 8:58
  • если вы проверите 2 приведенные ниже команды то увидите что типы данных будут array для первой и string для второй. 

    Если бы с $users было бы тоже самое проблем бы не было.

    Корп тайну можно замазать в пеинте из балончика до нечитаемого вида но есть большая вероятность что вы пропускаете что-то простое если это увидеть... Но дело ваше

    (Get-Content C:\-\users.txt).gettype()

    # и

    (Get-Content C:\-\users.txt)[0].gettype()


    The opinion expressed by me is not an official position of Microsoft

    19 декабря 2018 г. 10:09
    Модератор
  • Что-то не выходит фотки загрузить.

    Вот вывод:

    PS C:\> (Get-Content C:\-\users_Bnn.txt).GetType()
    
    IsPublic IsSerial Name                                     BaseType                                                                                                                            
    -------- -------- ----                                     --------                                                                                                                            
    True     True     Object[]                                 System.Array                                                                                                                        
    
    
    
    PS C:\> (Get-Content C:\-\users_Bnn.txt)[0].GetType()
    
    IsPublic IsSerial Name                                     BaseType                                                                                                                            
    -------- -------- ----                                     --------                                                                                                                            
    True     True     String                                   System.Object                                                                                                                       
    
    
    
    PS C:\> $users_Bnn.GetType()
    
    IsPublic IsSerial Name                                     BaseType                                                                                                                            
    -------- -------- ----                                     --------                                                                                                                            
    True     True     Object[]                                 System.Array                                                                                                                        
    
    
    
    PS C:\> $users_Bnn[0].GetType()
    
    IsPublic IsSerial Name                                     BaseType                                                                                                                            
    -------- -------- ----                                     --------                                                                                                                            
    True     True     String                                   System.Object 

    19 декабря 2018 г. 10:49