2017-11-10 3 views
2

私は新しく、powershellについて十分に分かりません。私は数千の電子メールを持つ.csvファイルを持っており、PowerShellを使用して特定のカスタム変数の状態を見つけるためにActive Directoryを使用する必要があります。

私はヘッダーの "EMAILS"とその下の約6000個の電子メールである.csvを持っています。 (email1 @ company、email2 @ companyなど)

それぞれのカスタムプロパティの状態を調べる必要があります。個別

、私は、私は1つの特定のユーザの状態を見つけるために

Get-ADUser -Filter {mail -eq '[email protected]'} -properties customproperty 

を実行できることを知っています。

私は壁に頭を打って、import-csvexport-csvで動作させようとしていますが、私はすべて自分のコンソールに赤くなっています。

import-csvとが正しく使用され、その内容に対してコマンドが実行されている例を教えてもらえますか?

+1

郵便あなたのコード、エラーメッセージ、および「私はこのエラーを理解し、自分のコードの作品を​​作るのを助ける?」尋ねます - >トピックについて"私は例を挙げてみて、それを私にリンクすることはできません"という投稿を投稿する - "第三者のリソースへのチュートリアルやリンクを求める"の下でトピックを明示的にオフにすることはできません。電子メールはCSVの1行につき1行であるか、セミコロン/スペース/などで区切られた人のための電子メールの集合です。 ? (なぜ分離するフィールドがない場合はCSVですか?) – TessellatingHeckler

答えて

0

あなたが投稿したコードを見ることなく、私はあなたが問題を実行すると思うところは、2つのものの相互作用の方法です。

Import-CSVコマンドレットを使用すると、最初に表示されます。文字列の配列ではなく、各列のプロパティを持つオブジェクトの配列を受け取ります。

これは、ADモジュールフィルタの感度である問題の2番目の部分と関連しています。しかし、短い答えは、をフィルタ内に使用しないでください。これは、{mail -eq $ImportedCSV.EMAILS}を使用すると壊れます。 mklement0にはwonderful answerという細部が含まれています。しかし、簡単な経験則は、 "二重引用符の外側、一重引用符"内側です。

だから、{}内部で動作したり、"mail -eq '$ImportedCSV.EMAILS'"を使用することができ、配列を持っているのいずれかSelect-Object -ExpandProperty EMAILSEMAILSプロパティを展開できます。ここで

は拡大と"property -eq '$variable'"スタイルフィルターを使用して、両方を持つ例です。

Import-CSV C:\Example\Path.csv | 
    Select-Object -ExpandProperty EMAILS | 
    ForEach-Object { 
     Get-ADUser -Filter "mail -eq '$_'" -Properties customproperty 
    } | 
    Select-Object mail,customproperty | 
    Export-CSV C:\Example\OutputPath.csv -NoTypeInformation 
1

は、ここで私はどうなるのかです。

まず、電子メールアドレスを持つすべてのユーザーをADにフェッチし、ハッシュテーブルに保存します。これにより、ルックアップが不当に速くなり、ドメインコントローラ全体の負荷が軽減されます。あなたが10万のユーザーアカウントを持っているなら、それは最良の選択肢ではないかもしれませんが、一般的になると思います。

$ADUsers = @{}; 
Get-ADUser -Filter "mail -like '*'" -Properties mail, customproperty | ForEach-Object { 
    $ADUsers.Add($_.mail, $_.customproperty); 
} 

は今、あなたはCSVをインポートし、Select-Objectで計算プロパティを使用してルックアップし、バックアウト、それをエクスポートします。

Import-Csv -Path $InputFile | Select-Object -Property emails, @{n='customproperty';e={$ADUsers[$_.emails]}} | Export-Csv -Path $OutputFile -NoTypeInformation; 
0

コードの下に使用してください

$csvInput = Import-CSV C:\Example\test.csv 

Foreach ($line in $csvinput) { 
    Get-ADUser -Filter {mail -eq $line.mail} -Properties mail, customproperty | 
    Select-Object mail,customproperty | 
     Export-CSV C:\Example\OutputPath.csv -NoTypeInformation 
} 
+0

ここで、 'Export-Csv'の' -Append'パラメータを使いたいと思うでしょう。 –

関連する問題