2016-08-02 3 views
0

600人以下のユーザーが電子メールアカウントを持っているかどうかを確認するためのスプレッドシートが与えられました。私はActive Directoryまで走ることができる彼らの名前があります。私はそれらのすべてを通過しないので、私のためにそれを行うにはPowerShellスクリプトを作成したいと思います。Powershell - ADで実行中のExcelで情報をインポートする

私はおそらく自分で見つけることができるように私はかなり怠惰だと思うが、私は時間のためにかなり縛られています。ヘルプは非常に高く評価されるだろう。

だから、基本的に、私は次の操作を実行したい:

  • インポートExcelスプレッドシート(​​ "ユーザーの名前のスプレッドシート")
  • チェック欄 "G、F"(姓、forename)と入力値に広告。

IF名前が見つかりました。名前とメールが返されます。 else print 「アカウントなし」。

+0

Excelシートに基づいてADユーザーを更新しますか? – Fairy

+0

私はADで何も編集したくありません。私はそれから情報を取りたい。何も編集しない。 – RhaegoT

答えて

1

あなたが絶対にできない限り、私はExcel自体を避けるでしょう。コンテンツをCSVファイルに変換すると仮定すると、このようなことが達成できます。

Import-Module ActiveDirectory 
Import-Csv SpreadsheetAsCsv.csv | ForEach-Object { 
    $givenName = $_.Forename 
    $sn = $_.Surname 
    $ADUser = Get-ADUser -Filter { givenName -eq $givenName -and sn -eq $sn } -Properties EmailAddress 

    $Entry = $_ | Select-Object Forename, Surname, Name, Email, Notes 

    if (($ADUser | Measure-Object).Count -gt 1) { 
     $Entry.Notes = 'Too many matches ({0})' -f ($ADUser.SamAccountName -join ', ') 
    } elseif ($ADUser) { 
     $Entry.Email = $ADUser.EmailAddress 
     $Entry.Name = $ADUser.Name 
    } else { 
     $Entry.Notes = 'No account' 
    } 

    $Entry 
} | Export-Csv NewCsvFile.csv -NoTypeInformation 
+0

それは素晴らしいです。どこかへ行く。ただし、CSVの行を循環させる特定のコマンドレットは何ですか? – RhaegoT

+0

Import-Csvはこれを行っています。 ForEach-Objectは$ _経由で個々の行にアクセスできるようにループでコンテンツを消費しています。 –

関連する問題