Скрипт Powershell для отображения всех групп и их пользователей

В настоящее время я пытаюсь написать скрипт, который отображает каждую группу и пользователя в домене.

        Import-Module ActiveDirectory

$Groups = (Get-AdGroup -filter * | Where {$_.name -like "**"} | select name -expandproperty name)

$Table = @()

$Record = [ordered]@{ "Group Name" = ""; "Name" = ""; "Username" = ""; }

Foreach ($Group in $Groups) {

$Arrayofmembers = Get-ADGroupMember -identity $Group | select name,samaccountname

foreach ($Member in $Arrayofmembers) { 
$Record.Set_Item("Group Name", $Group) 
$Record.Set_Item("Name", $Member.name) 
$Record.Set_Item("Username", $Member.samaccountname) 
$objRecord = New-Object PSObject -property $Record $Table += $objrecord

}

}

$Table | export-csv "C:\temp\SecurityGroups.csv" -NoTypeInformation

Он всегда возвращает эти ошибки:

New-Object : A positional parameter cannot be found that accepts argument '+='.
At C:\Users\tech\Desktop\list.ps1:17 char:14
+ $objRecord = New-Object PSObject -property $Record $Table += $objrecord
+              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [New-Object], ParameterBindingException
    + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.NewObjectCommand

New-Object : A positional parameter cannot be found that accepts argument '+='.
At C:\Users\tech\Desktop\list.ps1:17 char:14
+ $objRecord = New-Object PSObject -property $Record $Table += $objrecord
+              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [New-Object], ParameterBindingException
    + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.NewObjectCommand

Повторяя снова и снова.

Любая помощь будет принята с благодарностью!

Кстати это сервер 2012 R2

2 ответа

Get-AdGroup -filter * |
    ForEach-Object{
        $groupname=$_.Name
        Get-ADGroupMember $_ |
            ForEach-Object{
                [pscustomobject]@{
                    GroupName=$groupname
                    Name=$_.name
                    SamAccountNamename=$_.samaccountname
                }
            }
    }

Вам нужно инициализировать $objRecord как массив:

$objRecord = @()

Тогда вы можете += это.

Кроме того, вы должны просто сделать:

$objRecord += New-Object PSObject -property $Record $Table

вместо:

$objRecord = New-Object PSObject -property $Record $Table += $objrecord

То есть: вы делаете 2 задания. Вы либо делаете a=a+1, либо a+=1.

Я бы пошел с ответом Стива, хотя.

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