AD -OtherAttributes parameter - no pipeline?

This topic contains 0 replies, has 1 voice, and was last updated by Profile photo of Forums Archives Forums Archives 5 years, 3 months ago.

  • Author
    Posts
  • #5753

    by sponsen at 2013-04-03 06:47:54

    I recently created a bunch of ADGroups using powershell, and came over what i think should be a fetaure – and was wondering if i had forgotten something, before I post this as a PowerShell feature suggestion 🙂

    So, lets say that yo have gotten a large CSV file that contains Name,SamAccountName,Mail
    From this CSV, you shal make ADGroups. Allright, Name and SamAccountName is OK – they have parameters ByPropertyName, but the other attributes must be written via -OtherAttributes.

    And here is the issue.. -OtherAttributes dont allow pipeline input.. Since this is such a wide-covering parameter, i find it strange that the AD team have not implemented pipelining here.. Or am I missing anything here?

    What would you do to the following one-liner to input the mail values to each ADGroup?

    Import-Csv C:\MassiveGroupDB.csv | New-ADGroup -OtherAttributes ???? -GroupCategory Distribution -GroupScope Universal -Path "OU=Distribution Groups,DC=domain,DC=com"

    by ArtB0514 at 2013-04-03 07:17:29

    One liners are severely overrated. The only way you can achieve what you want to do is with a foreach clause. The easiest way to create an OtherAttributes collection is by way of a hash table (also lookup splatting).

    Note that this is just an example; it is not necessarily complete, and has definitely not been tested to verify that it works.
    foreach ($Group in (Import-Csv C:\MassiveGroupDB.csv)) {
    $Props = $Group | Get-Member -MemberType *Property | Select -ExpandProperty Name
    $Props = $Props | Where {$_.Name -notmatch "^Name$|^SamAccountName$|^OtherAttributeToIgnore$"}
    $Properties = @{}
    $Props | Foreach {$Properties.Add($_,$Group.$_)}
    New-ADGroup -OtherAttributes $Properties -GroupCategory Distribution -GroupScope Universal -Path "OU=Distribution Groups,DC=domain,DC=com"
    }

You must be logged in to reply to this topic.