ファイルから読み込んだ後、$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の両方を設定して、相互参照できるようにしたいと思っていました。
'-filter'パラメータを使用して' sAMAccountName'によって 'ADUser'を取得する必要はありません。 '-Identity'パラメータは' sAMAccountName'を有効な値として取ります: 'Get-ADUser -Identity $ sAMAccountName -Properties mail | Select-Object -Properties mail' –
良い点!私は私の答えを改めるつもりです。 –