none
Active Directory добавление групп. RRS feed

  • Общие обсуждения

  • Добрый день! Я написала скрипт powershell, который добавляет группы доступа аналогично другому пользователю в Active Directory, осталось его автоматизировать. Проблема заключается в том, что скрипт работает только из под администратора в powershell ISE, в остальных случаях скрипт не может получить информацию о группах другого пользователя. Пробовала запускать через планировщик с наивысшими правами, скрипт не работает.
    26 августа 2019 г. 7:06

Все ответы

  • Запустите его не с контроллера домена, а с любого другого хоста.
    26 августа 2019 г. 7:29
  • Не помогает. Отрабатывает так же. 
    26 августа 2019 г. 8:06
  • А в чём выражается "не может получить"? Возвращается ошибка или просто пустой список?

    Хотелось бы и на сам код посмотреть. 

    26 августа 2019 г. 8:35
  • For ($l=$der.Length-5; $l -ge 0; $l--) {
         if ($str -ne "") {
             $str = "," + $str 
         }
              $str =  $der[$l] + $str
              $rew = $str+$str_def
             #$nb = ($rew -split ',*..=')
    
                       $rew = "CN=Эталон "+$der[$l].Substring(3)+","+$rew
                 echo $rew
                
                     Get-ADUser -Filter {distinguishedName -like $rew} -Properties MemberOf | % {$_.MemberOf | Get-ADGroup  | sort } |  ForEach-Object { Add-ADGroupMember $_ –Member $user -ErrorAction Continue  } 
        
         }
    
    

    Вот в этом запросе мне скрипт должен отобразить, что есть MemberOf, но там пусто.

     $a = Get-ADUser -Filter {distinguishedName -like $rew} -Properties MemberOf

                     $a | ForEach-Object {

                        echo $_
                      }

    26 августа 2019 г. 9:20
  • For ($l=$der.Length-5; $l -ge 0; $l--) {
         if ($str -ne "") {
             $str = "," + $str 
         }
              $str =  $der[$l] + $str
              $rew = $str+$str_def
             #$nb = ($rew -split ',*..=')
    
                       $rew = "CN=Эталон "+$der[$l].Substring(3)+","+$rew
                 echo $rew
                
                     Get-ADUser -Filter {distinguishedName -like $rew} -Properties MemberOf | % {$_.MemberOf | Get-ADGroup  | sort } |  ForEach-Object { Add-ADGroupMember $_ –Member $user -ErrorAction Continue  } 
        
         }
    

    Вот в этом запросе мне скрипт должен отобразить, что есть MemberOf, но там пусто.

     $a = Get-ADUser -Filter {distinguishedName -like $rew} -Properties MemberOf

                     $a | ForEach-Object {

                        echo $_
                      }

    в последнем кодблоке вы получаете не список групп, а список обьектов aduser у которых в том числе (помимо стандартных свойств) выбран memberof и если этот список юзеров пуст значит ваш фильтр работает не корректно (не работает) в следвсии чего отсекаются все обьекты пользюков

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

    26 августа 2019 г. 10:18
    Модератор
  • <offtop> не пользуйтесь ISE, возмите тот же вскод (это так, совет на будущее) </offtop>


    26 августа 2019 г. 12:53
  • ISE ещё вполне жив и проживет некоторое время (как и cmd в своё время), ИМХО ищё рановато мигрировать на вскод. Но тенденция имеет место быть (как и с Windows Admin Center).
    26 августа 2019 г. 13:00
  • спорить не буду. но (ИМХО)нет. 
    26 августа 2019 г. 14:32
  • А что если ps1 конвертировать в exe и уже его запускать, так как вам нужно
    26 августа 2019 г. 14:48
  • А что если ps1 конвертировать в exe и уже его запускать, так как вам нужно

    а что это изменит если ps1 (исходный файл) не работает?

    Екатирина, пепроверьте все переменные и приведите команду со значениями вместо названия переменных.

    Переменные $a, $l, $der не читаемы и если вы скрипты запускаете не на микроконтроллерах с 16 кб памяти, то нет необходимости скупиться на буквы в названии переменных.


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

    26 августа 2019 г. 15:54
    Модератор