DB 内のすべてのユーザーをエクスポートし、すべてのデータを CSV ファイルに保存する PowerShell 5.1 スクリプトを作成しました。このスクリプトを使用すると、日付を遡って設定できるため、いつからユーザーをエクスポートするかを決定できます。
いくつかのテストを行った後、すべてのユーザーがエクスポートされるわけではないことに気付き、さらに調査を進めると、各ユーザーにプロパティが存在しないことがわかりましたWhenChanged
。 WhenCreated
以下のスクリーンショットに示すように、AD UI には正しいデータを持つプロパティが表示されていますが、それでもです。
次のコマンドを実行すると:
Get-ADUser -filter * -Properties LastLogonDate, userPrincipalName, initials, WhenCreated, whenChanged | Select-Object userPrincipalName, initials, whenCreated, whenChanged
次の結果が得られます。
userPrincipalName initials whenCreated whenChanged
----------------- -------- ----------- -----------
11/9/2017 2:06:29 PM 1/24/2018 4:26:48 PM
11/9/2017 2:07:47 PM 11/22/2017 4:12:52 PM
[email protected] MP 11/14/2017 3:14:45 PM 2/14/2018 4:02:51 AM
[email protected] DG 11/15/2017 12:51:25 PM 2/21/2018 2:12:52 PM
[email protected] AE
[email protected] MM
[email protected] RW
[email protected] KK
[email protected] AP
[email protected] JS
[email protected] CB 11/17/2017 12:21:32 PM 11/22/2017 4:41:35 PM
[email protected]
[email protected] TT
ご覧のとおり、スクリーンショットでは値があることが示されているにもかかわらず、イニシャルが TT のユーザーには値がありません。今日このユーザーを作成し、同じ日にいくつかの値を変更したにもかかわらずです。
質問
- 何が足りないのでしょうか?
- これは AD 自体の問題でしょうか、それともコマンドだけの問題でしょうか?
答え1
この問題の解決策は、PowerShell ショートカットを右クリックして を選択することですRun as Administrator
。管理者権限を持っている場合でも、この操作を行う必要があります。これを実行してコマンドを再度実行すると、すべてのデータがそこに保存されます。
userPrincipalName initials whenCreated whenChanged
----------------- -------- ----------- -----------
11/9/2017 2:06:29 PM 1/24/2018 4:26:48 PM
11/9/2017 2:06:29 PM 11/9/2017 2:06:29 PM
11/9/2017 2:06:29 PM 11/9/2017 2:06:29 PM
11/9/2017 2:07:47 PM 11/22/2017 4:12:52 PM
[email protected] MP 11/14/2017 3:14:45 PM 2/14/2018 4:02:51 AM
[email protected] DG 11/15/2017 12:51:25 PM 2/21/2018 2:12:52 PM
[email protected] AE 11/16/2017 1:11:30 PM 11/22/2017 4:11:37 PM
[email protected] MM 11/16/2017 1:12:02 PM 11/22/2017 4:11:37 PM
[email protected] RW 11/16/2017 1:12:40 PM 11/22/2017 4:11:37 PM
[email protected] KK 11/16/2017 1:13:13 PM 11/22/2017 4:11:37 PM
[email protected] AP 11/16/2017 1:14:15 PM 11/22/2017 4:11:37 PM
[email protected] JS 11/16/2017 1:14:50 PM 11/22/2017 4:11:37 PM
[email protected] CB 11/17/2017 12:21:32 PM 11/22/2017 4:41:35 PM
11/22/2017 3:37:49 PM 2/16/2018 2:50:25 PM
11/22/2017 3:38:43 PM 2/17/2018 3:58:24 PM
[email protected] 11/22/2017 4:02:18 PM 11/22/2017 4:41:36 PM
[email protected] TT 2/21/2018 1:21:13 PM 2/21/2018 1:59:17 PM
答え2
あなたと同じように、私はこのコマンドを実行しました:
Get-ADObject -filter 'sAMAccountName -eq "xxxxxx"' | select whenchanged
日付は常に空白でした。この記事を見つけました:https://www.itprotoday.com/powershell/view-all-properties-ad-objects-powershellオブジェクトのすべてのプロパティを一覧表示する方法を示しました。
Get-ADObject -filter 'sAMAccountName -eq "xxxxxx"' -properties *
これにより、whenChanged (または他のプロパティ) を適切に表示するためのクエリの次のバリエーションが作成されました。
Get-ADObject -filter 'sAMAccountName -eq "xxxxxx"' -properties *| select whenchanged
「*」を、必要なプロパティのコンマ区切りリストに置き換えることができることに注意してください。データセットが大きい場合や RAM が限られている場合は、パフォーマンスに影響が出る可能性があります。
これが他の人の役に立つことを願っています。