web-dev-qa-db-ja.com

Active DirectoryオブジェクトのCSVをエクスポートする方法

ユーザーIDの再検証作業のために、すべてのユーザーレコードとそれに関連するグループのダンプを取得しようとしています。私のセキュリティ担当者はCSV形式でそれを望んでいます。

これはうまくいきます:

Get-ADUser -Filter * -Properties * | Select-Object -Property Name,SamAccountName,Description,EmailAddress,LastLogonDate,Manager,Title,Department,whenCreated,Enabled,Organization | Sort-Object -Property Name | ConvertTo-CSV

ただし、これにはユーザーがメンバーになっているグループは含まれません。

次のような試みは失敗しました:

Get-ADUser -Filter * -Properties * | Select-Object -Property Name,SamAccountName,Description,EmailAddress,LastLogonDate,Manager,Title,Department,whenCreated,Enabled,Organization, @{$_.MemberOf |Get-Group|ForEach-Object {$_.Name}} | Sort-Object -Property Name | ConvertTo-CSV

これも失敗しました:

Get-ADUser -Filter * -Properties * | Sort-Object -Property Name | ForEach-Object {
    $_ | Format-List -Property Name,SamAccountName,Description,EmailAddress,LastLogonDate,Manager,Title,Department,whenCreated,Enabled
    $_.MemberOf | Get-ADGroup | ForEach-Object {$_.Name} | Sort-Object
}  | ConvertTo-CSV

おそらく私は何か単純なものを見逃しているでしょう。どんな助けでも大歓迎です。ありがとう!

5
Sean

Windows Server OSから次のコマンドを実行して、Active Director全体のダンプを取得します。

csvde -f test.csv

このコマンドは非常に幅広く、必要以上の情報を提供します。レコードをユーザーレコードのみに制限するには、代わりに次のようにします。

csvde -f test.csv -r objectClass=user 

コマンドをさらに制限して、要求された検索に関連する次のような必要なフィールドのみを提供できます。

csvde -f test.csv -r objectClass=user -l DN, sAMAccountName, department, memberOf

Exchangeサーバーがあり、実在する人物に関連付けられた各ユーザーがメールボックスを持っている場合(キオスク/ラボワークステーションの一般的なアカウントではなく)、sAMAccountNameの代わりにmailNicknameを使用できます。

8
Octavian

後世のために....必要なものを手に入れる方法を見つけました。これは、他の誰かに役立つかもしれない場合に備えています。

$alist = "Name`tAccountName`tDescription`tEmailAddress`tLastLogonDate`tManager`tTitle`tDepartment`tCompany`twhenCreated`tAcctEnabled`tGroups`n"
$userlist = Get-ADUser -Filter * -Properties * | Select-Object -Property Name,SamAccountName,Description,EmailAddress,LastLogonDate,Manager,Title,Department,Company,whenCreated,Enabled,MemberOf | Sort-Object -Property Name
$userlist | ForEach-Object {
    $grps = $_.MemberOf | Get-ADGroup | ForEach-Object {$_.Name} | Sort-Object
    $arec = $_.Name,$_.SamAccountName,$_.Description,$_.EmailAddress,$_LastLogonDate,$_.Manager,$_.Title,$_.Department,$_.Company,$_.whenCreated,$_.Enabled
    $aline = ($arec -join "`t") + "`t" + ($grps -join "`t") + "`n"
    $alist += $aline
}
$alist | Out-File D:\Temp\ADUsers.csv
7
Sean
csvde -f test.csv

このコマンドは、Active DirectoryサーバーのすべてのエントリのCSVダンプを実行します。ユーザーとグループの完全なDNを表示できるはずです。

その出力ファイルを調べて、不要なコンテンツを取り除く必要があります。

5
Jose Vega

こんにちは、これを試すことができます...

試して.

$Ad = Get-ADUser -SearchBase "OU=OUi,DC=company,DC=com"  -Filter * -Properties employeeNumber | ? {$_.employeenumber -eq ""}
$Ad | Sort-Object -Property sn, givenName | Select * | Export-Csv c:\scripts\ceridian\NoClockNumber_2013_02_12.csv -NoTypeInformation

または

$Ad = Get-ADUser -SearchBase "OU=OUi,DC=company,DC=com"  -Filter * -Properties employeeNumber | ? {$_.employeenumber -eq $null}
$Ad | Sort-Object -Property sn, givenName | Select * | Export-Csv c:\scripts\cer

それがあなたのために働くことを願っています。

0
user1872541

最初のコマンドは正しいですが、以下のように変換からcsvへのエクスポートに変更します、

Get-ADUser -Filter * -Properties * `
    | Select-Object -Property Name,SamAccountName,Description,EmailAddress,LastLogonDate,Manager,Title,Department,whenCreated,Enabled,Organization `
    | Sort-Object -Property Name `
    | Export-Csv -path  C:\Users\*\Desktop\file1.csv
0
user2791583