2017-04-11 69 views
1

的另一份名单目前,我在我的所有的Active Directory用户的使用下面的命令:添加从列表中检索用户的用户

$users = Get-AdUser -Filter {(Enabled -eq "True")} -Properties Description 

在此之后,我做各种事情以这种方式列表:

foreach ($user in $users) 
{ 
    if($user.Description -eq "Admin") 
    { 
    Write-Host "This is an admin!" 
    #Here comes the code that adds the admin to a new list 
    } 

    if($user.Description -eq "Secretary") 
    { 
    Write-Host "This is a Secretary!" 
    #Here comes the code that adds the secretaries to a new list 
    } 
} 

我想不过的事情,是在foreach通过他们的描述中添加用户到用户的一个新的列表(这样我就可以将它们与后来做的事情一样展示自己的姓名,金额,.. )

我的方法是什么?

回答

2

多种方式来实现。我可能会用Where-Object cmdlet来进行筛选:

$admins = $users | Where-Object Description -eq 'Admin' 
$secretaries = $users | Where-Object Description -eq 'Secretary' 

另一种方式是在foreach循环之前数组初始化和if语句中添加他们:

$admins = @() 
$secretaries = @() 

foreach ($user in $users) 
{ 
    if($user.Description -eq "Admin") 
    { 
    Write-Host "This is an admin!" 
    $admin += $user 
    } 

    if($user.Description -eq "Secretary") 
    { 
    Write-Host "This is a Secretary!" 
    $secretaries += $user 
    } 
} 
+0

我试图使用你提出的第二种方式(因为这是我试图实现的)。但我似乎无法使用用户的属性(如'$ user.Name')后,我试图做的事情与数组? –

+0

您是否可以在过滤用户之后解释您想要执行的操作? –

+0

我的'最终目标'是列出每个组在foreach中被过滤的列表。这样我就可以操纵列表并检索他们的名字等等。你会说PowerShell不允许我做这些类型的列表操作吗? –