2016-06-08 82 views
1

我有如下帐户列表的文本文件 -如何从AD帐户列表中分离用户和组?

AccountName 
Mahin\user1 
Mahin\user2 
Mahin\group5 
user12 
usert1 
groupt3 

这样一来,我身边有400账户(用户的各种组合和一些团体), 你可以从上面看到,一些账户有格式为<Domain>\<AccountName> 和一些只有<AccountName>

我试图找到一种方法从这个列表中分离出用户和组, 我该如何使用PowerShell实现这一目标?

寻找类似

AccountName, IsUser, IsGroup, IsExists 
Mahin\user1,1,0,1 
Mahin\user2,1,0,1 
Mahin\group5,0,1,1 
user12,1,0,1 
usert1,,,0  //-> This Account DOES NOT EXIST, so, IsUser, IsGroup and IsExists (0) can be empty or some distiguishable number 
groupt3,,,0 //-> This Account DOES NOT EXIST, so, IsUser, IsGroup and IsExists (0) can be empty or some distiguishable number 

到目前为止,我知道怎么去使用下面的脚本不同群体的成员,但不能确定上述部分。

$groups = Get-Content "C:\AD\groups.txt" 
$resultsarray [email protected]() 
foreach ($group in $groups) { 
    $resultsarray += Get-ADGroupMember -Id $group | select  
    samaccountname,name,@{Expression={$group};Label="Group Name"} 
} 
$resultsarray| Export-csv -path "C:\AD\output\GroupMembers.csv" -notypeinformation 
+0

请向我们展示您的示例(例如Mahin \ user1,Mahin \ group5)的完整预期输出 –

+0

您好Jisaak,请检查最新的一个 –

回答

2

注:我不是很熟悉Active Directory Cmdlets,有可能是这个更好的解决方案。

不过,我会检索所有的用户和组第一,然后遍历文本文件,并试图找到任何用户或组:

$users = Get-ADUser -filter * 
$groups = Get-ADGroup -filter * 

Get-Content 'YOUR_FILE_PATH'| ForEach-Object { 
    $adObject = $_ -replace '(.*)\\(.*)', '[email protected]$1' # fix search string 

    if ($users | Where { $_.SamAccountName -eq $adObject -or 
     $_.UserPrincipalName -like "$adObject*"}) 
    { 
     [PSCustomObject]@{ 
      AccountName = $_ 
      IsUser = $true 
      IsGroup = $false 
      Exist = $true 
     } 
    } 
    elseif ($groups | Where Name -eq $adObject) 
    { 
     [PSCustomObject]@{ 
      AccountName = $_ 
      IsUser = $false 
      IsGroup = $true 
      Exist = $true 
     } 
    } 
    else 
    { 
     [PSCustomObject]@{ 
      AccountName = $_ 
      IsUser = $false 
      IsGroup = $false 
      Exist = $false 
     } 
    } 
} | Export-csv -path "C:\output\GroupMembers.csv" -notypeinformation 

在我AD我不得不变换Mahin\group5[email protected]和搜索[email protected]*,这就是为什么我替换脚本中的字符串。

+0

非常感谢Jisaak!我们如何将结果导出到csv文件?我可以将此行添加到脚本中吗? “$ adObject | Export-csv -path”C:\ output \ GroupMembers.csv“-notypeinformation” –

+0

只需添加'| Export-csv -path“C:\ output \ GroupMembers.csv”-notypeinformation“紧接在最后一个大括号之后 –

+0

如果我在最后一个大括号之后加上那一行,会引发语法错误 –

相关问题