add-adgroupmember возможны ли нулевые значения?

#powershell

#powershell

Вопрос:

Я запускаю приведенную ниже команду PS для csv-файла, который содержит список групп AD, за которыми следуют пользователи AD.

Скрипт работает нормально до тех пор, пока все поля заполнены, есть ли команда / переключатель, который игнорировал бы значение non как таковое?

 import-csv c:adminpowershellADGroupMembers.csv | foreach {add-adgroupmember -Identity $_.ADGroup $_.member1,$_.member2,$_.member3,$_.member4,$_.member5}
  

Содержимое CSV-файла

 ADGroup,Member1,Member2,Member3,Member4,Member5
AD-Test1,Minnie,Mickey,Donald,Daisy,Goofy
AD-Test2,Minnie,Mickey,Donald,,
AD-Test3,Minnie,Mickey,Donald,Pete,Spike
  

Ответ №1:

Проверьте, не имеет ли одно из свойств member * значения:

 Import-Csv c:adminpowershellADGroupMembers.csv | Foreach-Object {

    $values = $_.PSObject.Properties | Where-Object {$_.Name -clike "Member*" -and [string]::IsNullOrEmpty($_.Value) }

    if($values)
    {
       Write-Warning 'missing values'
    }
    else
    {
       Add-ADGroupMember -Identity $_.ADGroup $_.member1,$_.member2,$_.member3,$_.member4,$_.member5
    }
}
  

Ответ №2:

Я предполагаю, что вы также хотите добавить элементы строк, содержащих пропущенные значения (например, вы хотите добавить Минни, Микки и Дональда в AD-Test2). В этом случае я бы преобразовал наш csv-файл в коллекцию объектов с двумя свойствами: ADGroup (строка) и Members (строка[]). Тогда я бы передал эту коллекцию в add-groupmember.

Коллекция будет выглядеть примерно так:

 <#
ADGroup          Members        
-------          -------        
AD-Test1         {Minnie, Mickey, Donald, Daisy...}
AD-Test2         {Minnie, Mickey, Donald}
AD-Test3         {Minnie, Mickey, Donald, Pete...}
#>
  

Как создать эту коллекцию:

 # collection creation
$groupmembers = `
import-csv .ADGroupMembers.csv | 
select AdGroup, @{
  Name = "Members"
  Expression = { 
    $members = @() 
    $_.psobject.properties |  
    Where-Object {$_.Name -clike "Member*" -and (-not [string]::IsNullOrEmpty($_.Value))} | 
    Foreach-Object {$members  = $_.value}
    $members 
  }
}
  

Передача коллекции в add-adgroupmember:

 $groupmembers | %{Add-ADGroupMember -Identity $_.AdGroup -Members $_.members}