2016-08-03 4 views
0

最近、60kユーザー名のリストが与えられました。その後、これらのユーザー名をアクティブディレクトリ内で検索し、その表示名をリストし、アフィリエイト(extensionattribute7)に基づいて別々のCSVファイルに保存するように求められました。Active Directoryのcsvからsamaccountの名前までの相互に一致するusernameフィールド? +独自のフィルタ?

私はこの3時間でうんざりしていました。ここで私を助けるために利用できるリソースはあまりなく、私は絶望的になっています。私を助ける時間をとってくれてありがとう!

+0

これまでに試したことはありますか?あなたの問題についての詳細は参考になります。 – AnimiVulpis

答えて

1

私はこれをテストする機会はありませんでしたが、ここでは必要なことをする簡単なスクリプトがあります。

本質的に、スクリプトはユーザー名のcsvファイルを列挙し、csv内の一致するすべてのユーザーを含む配列を作成します。さらに、 'extensionattribute7'を使用して、$ aAffiliates配列内の関連会社の一意のリストを構築します。

次のスクリプトでは、一意のアフィリエイトが列挙され、それぞれのアフィリエイトプロパティのユーザーがループ内の現在のアフィリエイトと一致することがわかります。これらの検索されたユーザーは、$ aResults配列に追加され、ファイル名にアフィリエイト名を含むcsvファイルにエクスポートされます。

希望すると便利です。

Import-Module ActiveDirectory 

$aUsers = @() 
$aAffiliates = @() 
$List = Get-Content "C:\Temp\List.txt" 

ForEach ($Item in $List) { 
    $Item = $Item.Trim() 
    $User = Get-ADUser -Filter { SamAccountName -like $Item } -Properties DisplayName, extensionattribute7 

    # Build unique list of affiliates 
    If ($aAffiliates -notcontains $User.extensionattribute7) { 
     $aAffiliates += $User.extensionattribute7 
    } 

    $hItemDetails = New-Object -TypeName psobject -Property @{ 
     Username = $Item 
     DisplayName = $User.DisplayName 
     Affiliate = $User.extensionattribute7 
    } 

    #Add data to array 
    $aUsers += $hItemDetails 
} 

ForEach ($Affiliate in $aAffiliates) { 
    $aResults = @() 

    ForEach ($User in $aUsers) { 
    If ($User.Affiliate -eq $Affiliate) { 
     $aResults += $User  
    } 
    } 

    $Path = "C:\Temp\Results-$($Affiliate).csv" 
    $aResults | Export-CSV $Path 
} 
+0

これは素晴らしいです、ありがとうございます! – MMbill

関連する問題