[解決済み] Get-ADUser でのエラー: 無効な列挙コンテキスト
質問
先日、こんな質問を投稿しました。 グループ化されたオブジェクトから電子メールを抽出する
$OuUser = @{}
$OuUser = Get-AdUser -Properties * -Filter * -SearchBase "domain"
$Duplicates = $OuUser | Select samaccountname, mail,UserPrincipalName |
Group-Object Mail | Where{$_.Count -gt 1}
$Duplicates | Select Name,Count,@{l='Accounts';e={($_.Group|Select -Expand samaccountname) -join ';'}} |
Export-CSV E:\Damo\Duplicates.csv -NoTypeInfo
コードは1つのドメインで正常に動作し、OUの小さなユーザーセットに対してそれをテストしています。
私がテストしたいドメインでテストすると、そのドメインには多くのユーザーがいるため、このコードは失敗します。OUには、電子メール形式でない電子メールアドレスが含まれています。これは、エラーのためにGet-ADUserの方を指しています。
Get-ADUser : The server has returned the following error: invalid enumeration c
ontext.
At C:\scripts\CountEmailsDup.ps1:4 char:21
+ $OuUser = Get-AdUser <<<< -Properties * -Filter * -SearchBase 'ou=external,o
u=user accounts,dc=bizdir,dc=nzpost,dc=co,dc=nz' -SearchScope OneLevel
+ CategoryInfo : NotSpecified: (:) [Get-ADUser], ADException
+ FullyQualifiedErrorId : The server has returned the following error: inv
alid enumeration context.,Microsoft.ActiveDirectory.Management.Commands.Ge
tADUser
なぜ、あるドメインではこのエラーが発生し、別のドメインでは発生しないのか、わからなくなっています。
どうすればいいですか?
ここでの最大の問題は、あなたが以下のようなことを要求していることです。
Get-ADUser
. あなたのコメントからすると、90万以上のアカウントを引っ張ってきていることになります。その上、これらのユーザーのすべてのプロパティを引っ張ってきているのです。狂気の沙汰としか言いようがありません。
このエラーが何を意味するのか完全には分かりませんが、このエラーが発生する人は皆、多くのユーザーを返していることは分かっており、あなたは明らかにそうだと思います。これを軽減するための最初のステップは
-ResultPageSize
の
Get-ADUser
. あなたのマイレージは変わるかもしれませんが、返すべきレコードの数を実験する必要があります。通常、500~1000件が良いスタートとなります。
私は決して
-Properties *
一人のユーザーのために引っ張っていて、すべてを見たいというのでなければ。あなたの関数で、これらのプロパティをすべて使っているのか、私は強く疑問に思います。効率化のために、必要なものだけに絞りましょう。そのためには
Mail
.
に基づいて処理しているので
mail
プロパティに入力されたメールプロパティのみを持つものに結果を限定することもできます。例えば、以下のようなフィルターがあります。
", "....
"(Vesperのコメントより)または "
@
というコメントから、" としました。
メールフィールドに123や.が入っているものがあるので、length -gt 3とかでスキップする必要がありそうです。
しかし、パイプラインを使用することで、パイプで使用するために結果を保存する代わりに、物事を進めることができるはずです。
Get-AdUser -Properties mail -Filter 'mail -like "*@*"' -SearchBase "domain" -ResultPageSize 1000 |
Group-Object Mail |
Where{$_.Count -gt 1} |
Select Name,Count,@{l='Accounts';e={($_.Group|Select -Expand samaccountname) -join ';'}} |
Export-CSV E:\Damo\Duplicates.csv -NoTypeInfo
関連
-
[解決済み] powershellでマウスクリックを送信するにはどうすればよいですか?
-
[解決済み] ヌル値の式でメソッドを呼び出すことはできない
-
[解決済み] PowerShellでコンソールに書き込むには?
-
[解決済み] PowerShellでファイルをダウンロードする
-
[解決済み] PowerShell モジュールを全ユーザーに持続的にインストールする
-
[解決済み] Join-Pathを使って、2つ以上の文字列をファイルパスに結合するにはどうすればよいですか?
-
[解決済み] PowerShellスクリプトから終了コードを返す
-
[解決済み] Windows Server 2016で、すべてのPowerShellセッションのコマンド履歴を確認するにはどうすればよいですか?
-
[解決済み] PowerShellの画面を各コマンドの前に自動的にクリアする方法はありますか?
-
[解決済み] PowerShellを使用してFTPでファイルをアップロードする
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] powershellでパラメータ'Path'がNULLのため引数を結合できないエラーの取得
-
[解決済み] PowerShellで、変数が数値を保持しているかどうかをテストするにはどうすればよいですか?
-
[解決済み] "get-wmiobject win32_process -computername" でエラー "Access denied , code 0x80070005" が発生する。
-
[解決済み] Powershell - 空のパイプ要素は許可されません。
-
[解決済み] Base64の文字列をデコードするには?
-
[解決済み] Powershell ISE 内の別の PS1 スクリプトから PowerShell スクリプト PS1 を呼び出す
-
[解決済み] PowerShellでデータをCSVにエクスポートする方法は?
-
[解決済み] PowerShell 'Or' ステートメント
-
[解決済み] 'Connect-MsolService' はコマンドレット名として認識されません。
-
[解決済み] powershellの&マークはどういう意味ですか?