我目前正在尝试编写一个脚本来显示域中的每个组和用户。
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
重复一遍又一遍。
任何帮助将不胜感激!
BTW这是服务器2012 R2
Get-AdGroup -filter * | ForEach-Object{ $groupname=$_.Name Get-ADGroupMember $_ | ForEach-Object{ [pscustomobject]@{ GroupName=$groupname Name=$_.name SamAccountNamename=$_.samaccountname } } }
您需要将$ objRecord初始化为一个Array:
$objRecord = @()
那你可以+ =它。
另外,你应该做的是:
$objRecord += New-Object PSObject -property $Record $Table
代替:
$objRecord = New-Object PSObject -property $Record $Table += $objrecord
即:你在做2个任务。 你要么a = a + 1或a + = 1。
不过,我会和史蒂夫的回答一起去的。