Ошибка переменной Powershell Get-Content и Get-ADGroup

Я пытаюсь выяснить причину, по которой я могу запустить скрипт, используя переменную $groups с Get-Content, но он не будет работать, если переменная $groups идет со списком Get-ADGroup, который я сделал ниже...

Блок, который работает:

$groups = Get-Content C:\groups.csv 

$results = @()

$file = "C:\Usuarios_Grupos_Darwin_AD.csv"  

foreach($Group in $Groups) { 

$results +=Get-ADGroupMember -Id $Group -Recursive | %{Get-ADUser -Identity $_.SamAccountName -Properties Enabled,Name} | Select @{Expression = {$Group};Label=”Group Name”},SamAccountName,Name,Enabled

}

$results | export-csv -notypeinformation -Delimiter ";" -path $file 

Блок, который не работает: (изменена только первая строка)

$groups = Get-ADGroup -Filter {Name -like '*Darwin*'}  -Properties * | select -property Name

$results = @()

$file = "C:\Usuarios_Grupos_Darwin_AD.csv"  

foreach($Group in $Groups) { 

$results +=Get-ADGroupMember -Id $Group -Recursive | %{Get-ADUser -Identity $_.SamAccountName -Properties Enabled,Name} | Select @{Expression = {$Group};Label=”Group Name”},SamAccountName,Name,Enabled

}

$results | export-csv -notypeinformation -Delimiter ";" -path $file

Вот ошибка:

Get-ADGroupMember : Cannot bind parameter 'Identity'. Cannot create object of type "Microsoft.ActiveDirectory.Management.ADGroup". The adapter cannot set the value of property 
"Name".
At line:11 char:34
+ $results +=Get-ADGroupMember -Id $Group -Recursive | %{Get-ADUser -Id ...
+                                  ~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Get-ADGroupMember], ParameterBindingException
    + FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.ActiveDirectory.Management.Commands.GetADGroupMember

Я пытаюсь встроить список вывода в один скрипт, не создавая csv с другим скриптом.

Заранее спасибо !!

Я думаю, это может сработать, если вы измените первую строку: $groups = (Get-ADGroup -Filter {Name -like '*Darwin*'} -Properties * | select -property Name).Name

Christophe 23.11.2022 14:50

Кристоф, этот способ тоже сработал как шарм! Спасибо брат !! Я использовал это прямо сейчас из-за срочности, потому что оно выводит имя группы без CN=...... Могу ли я как-нибудь помочь вам, например, проголосовать за ваш профиль или что-то в этом роде? Я думаю, что пока не могу голосовать за все ответы, потому что я новичок в стеке без большого количества очков.

Jonathan 14.12.2022 21:57
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
60
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Несколько замечаний о вашем коде:

  • параметр -Filter должен быть строкой, а не блоком сценария
  • использование $results += очень затратно, потому что весь массив необходимо перестраивать в памяти при каждом добавлении
  • Get-ADGroupMember также может возвращать компьютер и (если не используется с -Recursive) также групповые объекты, а не только пользователей, поэтому вы не можете напрямую передать Get-ADUser
  • никогда не используйте -Properties *, если вам нужно только одно свойство

Попробуй это:

# Get-ADGroup already returns objects with these properties:
# DistinguishedName, GroupCategory, GroupScope, Name, ObjectClass, ObjectGUID, SamAccountName, SID
$groups = Get-ADGroup -Filter "Name -like '*Darwin*'"
$file = "C:\Usuarios_Grupos_Darwin_AD.csv"  
# let PowerShell collect the objects for you instead of using +=
$results = foreach($Group in $Groups) { 
    # Get-ADGroupMember can return objects of type users and computers (also groups when used without -Recursive)
    # so filter the result to get only user objects
    $Group | Get-ADGroupMember -Recursive | Where-Object { $_.objectClass -eq 'user' } | ForEach-Object {
        $_ | Get-ADUser | Select @{Name = 'Group Name'; Expression = {$Group.Name}}, SamAccountName, Name, Enabled
    }
}

$results | Export-Csv -Path $file -NoTypeInformation -Delimiter ";"

@Jonathan Пожалуйста, если мой ответ решил вашу проблему, дайте нам знать. Кроме того, поскольку вы новичок на платформе, могу я попросить вас прочитать тур, где вы можете прочитать, как пометить вопрос как выполненный.

Theo 25.11.2022 13:37

Тео, прости, чувак! Я разместил ответ не в том месте, хахаха, поэтому он был удален. Ваши советы по powershell были очень полезными, спасибо большое. Единственный вопрос, который у меня возник, заключается в том, есть ли способ выбрать только имя группы, которое будет отображаться в csv, а не различающееся имя. Это выглядит как "CN=GroupNameblabla OU=XXX DC=Xxxx...." Спасибо!!

Jonathan 14.12.2022 22:02

@ Джонатан Должно быть так, как ты хочешь. Я изменил выражение, чтобы сохранить $Group.Name вместо DistinguishedName.

Theo 14.12.2022 22:11

Другие вопросы по теме