2017-05-04 20 views
1

私はパワーシェルの初心者です。私はアクティブなディレクトリからsamccountnameから電子メールアドレスを取得するためのコマンドを書く必要があります。私はすべてのsamaccountnamesをUsers.txtファイルに保存しました。Samaccountnameからメールアドレスを取得する

$users=Get-content .\desktop\users.txt 
get-aduser -filter{samaccountname -eq $users} -properties mail | Select -expandproperty mail 

親切にどのようにこのを進めるために私を示唆しています。私がここで間違っていることは何ですか?

答えて

3

ファイルから読み込んだ後、$Usersはユーザーの集まりになります。そのコレクション全体をフィルタに渡すことはできません。一度に1人のユーザーで処理する必要があります。 ForEachループでこれを行うことができます。

$users = Get-Content .\desktop\users.txt 
ForEach ($User in $Users) { 
    Get-ADUser -Identity $user -properties mail | Select -expandproperty mail 
} 

これは、各ユーザーの電子メールアドレスを画面に出力します。

コメントごとに-filterを使用する必要はありません。上の説明では、samaccountnameを直接-Identityパラメータに直接送信することができます。

あなたが使用できる代わりのForEach-Objectに(例えば輸出-CSVなど)別のコマンドに上の出力を送信する場合:我々は現在の項目を表すために$_を使用してこの例では

$users = Get-Content .\desktop\users.txt 
$users | ForEach-Object { 
    Get-ADUser -Identity $_ -properties mail | Select samaccountname,mail 
} | Export-CSV user-emails.txt 

パイプライン(例:ユーザー)に送信し、コマンドの出力をExport-CSVにパイプします。この種の出力にsamaccountnameとmailの両方を設定して、相互参照できるようにしたいと思っていました。

+2

'-filter'パラメータを使用して' sAMAccountName'によって 'ADUser'を取得する必要はありません。 '-Identity'パラメータは' sAMAccountName'を有効な値として取ります: 'Get-ADUser -Identity $ sAMAccountName -Properties mail | Select-Object -Properties mail' –

+0

良い点!私は私の答えを改めるつもりです。 –

関連する問題