ADユーザー削除スクリプトがこのようなメモリを大量に消費するのはなぜですか?

ジャロッド

終了したユーザーをActiveDirectoryの「終了した」OUに移動する別のスクリプトがあります。説明にメモを追加し、現在の曜日を「会社」フィールドに追加します。次に、このスクリプトはそのOUで60日以上経過したものを検索し、ADアカウントを削除し、他のサーバー上の関連フォルダーの一部も削除します。

verrrrryの実行速度が遅くなり、実行中にメモリが最大になる傾向があります。誰かがこれが起こる理由を見ることができますか?多分それはこれを行うための最も効率的な方法ではありませんか?

助けてくれてありがとう!

Import-Module ActiveDirectory  

$users = Get-ADUser -SearchBase "ou=Terminated,dc=domain,dc=com" -Properties "company", "description" -Filter * | where {$_.description -like "Terminated*" }
$Date = Get-Date
$Today = $Date.DayOfYear
$CSVDate = Get-Date -Format yyyy-MM-dd
$TermList = @()

foreach($user in $users)
{
$DN = $user.DistinguishedName
$Homefolder = ("\\v12-dfs-home\homefolders$\" + $user.samaccountname)
$Profile = ("\\v12-dfs-pro\XA65Profiles\" + $user.samaccountname)
$Desktop = ("\\v12-dfs-home\desktops\" + $user.samaccountname)
$Term = $user.company
$Result = ($Today - $Term)
$altResult = ($Today + 365) - $Term

    If ($Result -gt 60)
        {
            $TermList += $user | %{Get-ADUser $_.DistinguishedName -properties displayName, employeeID, samaccountname, title, Description | select displayName, employeeID, samaccountname, title, Description}
            Remove-ADUser -Identity $DN -Confirm:$false
            Remove-Item $Homefolder -Force -Recurse -ErrorAction SilentlyContinue -Confirm:$false
            Remove-Item $Profile -Force -Recurse -ErrorAction SilentlyContinue -Confirm:$false
            Remove-Item $Desktop -Force -Recurse -ErrorAction SilentlyContinue -Confirm:$false
        }
    ElseIf ($Result -lt 0)
        {
            If ($altResult -gt 60)
                {
                    $TermList += $user | %{Get-ADUser $_.DistinguishedName -properties displayName, employeeID, samaccountname, title, Description | select displayName, employeeID, samaccountname, title, Description}
                    Remove-ADUser -Identity $DN -Confirm:$false
                    Remove-Item $Homefolder -Force -Recurse -ErrorAction SilentlyContinue -Confirm:$false
                    Remove-Item $Profile -Force -Recurse -ErrorAction SilentlyContinue -Confirm:$false
                    Remove-Item $Desktop -Force -Recurse -ErrorAction SilentlyContinue -Confirm:$false
                }
        }

}


# Output CSV of accounts being deleted
$TermList | Export-Csv c:\Results\Deleted_$CSVDate.csv -NoType
ハムザ

ActiveDirectoryがビッグデータを取得することは問題になる可能性があります。しようとするときは注意してください:

  • ユーザー情報を取得します(データを格納するために使用できるRAMがなくなった場合、すべてのRAMを使用し、コマンドを失敗させる可能性があります(例:この記事
  • ForEachループは、処理するデータの量によっては、大量のRAMを消費する可能性があります。

私は間違っているかもしれませんが、スクリプトを遅くしてRAMを消費する可能性があるのは、コード内の2つだけです。

ここにいくつかのベストプラクティスがあります

理想的なPowerShellスクリプト:

  • オブジェクトのセット全体を保持するのではなく、取得時にオブジェクトを1つずつ処理します。
  • 必要な属性のみを取得します。
  • 検索中にオブジェクトをフィルタリングします。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

このJavaプログラムがメモリを大量に消費するのはなぜですか?

分類Dev

DockerがVIRTメモリを大量に消費するのはなぜですか?

分類Dev

なぜGNUはそのようなメモリを大量に消費するのですか?

分類Dev

大きな親プロセスの子フォークがシャットダウンしたときに、Perlが大量のメモリを消費しないようにするにはどうすればよいですか?

分類Dev

この単純な GTK3 アプリケーションが大量のメモリを消費するのはなぜですか?

分類Dev

UIImageが大量のメモリを消費するのはなぜですか?

分類Dev

ページテーブルが大量のメモリを消費するのはなぜですか?

分類Dev

この単純なシェルループが停止し、大量のメモリを消費し始めるのはなぜですか?

分類Dev

QML Imageがメモリを大量に消費するのはなぜですか?アプリケーションの速度を低下させる

分類Dev

このスクリプトはリソースを大量に消費しますか?もしそうなら、どのように改善しますか?

分類Dev

メモリを大量に消費する再帰関数の実行がエラーなしで抑制されるのはなぜですか?

分類Dev

Haskellの「何もしない」関数idが大量のメモリを消費するのはなぜですか?

分類Dev

`Publishers.Map`がアップストリーム値を熱心に消費するのはなぜですか?

分類Dev

この関数が時間外に多くのメモリを消費するのはなぜですか

分類Dev

文字列によるJavaメモリリーク?なぜこれが消費されてクラッシュするのですか

分類Dev

このメソッドはなぜ大量のメモリを消費するのですか? というか、GC がメモリを解放しないのはなぜですか?

分類Dev

ウサギのようなメッセージループは大量のメモリを消費しているようです

分類Dev

PDFファイルの印刷およびマージ中にメモリリークや不要なメモリ消費を回避するためにJavaでiTextを使用するためのベストプラクティスは何ですか

分類Dev

POPデスクトップ:メモリとCPUを大量に消費するこの「gjs」プロセスとは何ですか?

分類Dev

メモリリークは何ですか?なぜjava.lang.ref.Finalizerが多くのメモリを消費するのか

分類Dev

スクリプト内でユーザーを変更した場合、suを実行しているこのスクリプトが終了しないように見えるのはなぜですか?

分類Dev

スクリプト内でユーザーを変更した場合、suを実行しているこのスクリプトが終了しないように見えるのはなぜですか?

分類Dev

参照がメモリを消費するのはなぜですか?

分類Dev

Linux上の私のサービスがCPUを大量に消費するのはなぜですか?

分類Dev

列がまばらなパンダのデータフレームがより多くのメモリを消費するのはなぜですか?

分類Dev

大きなJava配列を作成すると、メモリが大量に消費されるのはなぜですか?

分類Dev

7人のユーザー、仮想メモリの異常な使用、大量のストリーム接続、すべてのプロセスのスリープが表示されるのはなぜですか?

分類Dev

MySQLがこれほど多くのメモリを消費するのはなぜですか?

分類Dev

このコードを実行しようとすると、大量のメモリが消費されます

Related 関連記事

  1. 1

    このJavaプログラムがメモリを大量に消費するのはなぜですか?

  2. 2

    DockerがVIRTメモリを大量に消費するのはなぜですか?

  3. 3

    なぜGNUはそのようなメモリを大量に消費するのですか?

  4. 4

    大きな親プロセスの子フォークがシャットダウンしたときに、Perlが大量のメモリを消費しないようにするにはどうすればよいですか?

  5. 5

    この単純な GTK3 アプリケーションが大量のメモリを消費するのはなぜですか?

  6. 6

    UIImageが大量のメモリを消費するのはなぜですか?

  7. 7

    ページテーブルが大量のメモリを消費するのはなぜですか?

  8. 8

    この単純なシェルループが停止し、大量のメモリを消費し始めるのはなぜですか?

  9. 9

    QML Imageがメモリを大量に消費するのはなぜですか?アプリケーションの速度を低下させる

  10. 10

    このスクリプトはリソースを大量に消費しますか?もしそうなら、どのように改善しますか?

  11. 11

    メモリを大量に消費する再帰関数の実行がエラーなしで抑制されるのはなぜですか?

  12. 12

    Haskellの「何もしない」関数idが大量のメモリを消費するのはなぜですか?

  13. 13

    `Publishers.Map`がアップストリーム値を熱心に消費するのはなぜですか?

  14. 14

    この関数が時間外に多くのメモリを消費するのはなぜですか

  15. 15

    文字列によるJavaメモリリーク?なぜこれが消費されてクラッシュするのですか

  16. 16

    このメソッドはなぜ大量のメモリを消費するのですか? というか、GC がメモリを解放しないのはなぜですか?

  17. 17

    ウサギのようなメッセージループは大量のメモリを消費しているようです

  18. 18

    PDFファイルの印刷およびマージ中にメモリリークや不要なメモリ消費を回避するためにJavaでiTextを使用するためのベストプラクティスは何ですか

  19. 19

    POPデスクトップ:メモリとCPUを大量に消費するこの「gjs」プロセスとは何ですか?

  20. 20

    メモリリークは何ですか?なぜjava.lang.ref.Finalizerが多くのメモリを消費するのか

  21. 21

    スクリプト内でユーザーを変更した場合、suを実行しているこのスクリプトが終了しないように見えるのはなぜですか?

  22. 22

    スクリプト内でユーザーを変更した場合、suを実行しているこのスクリプトが終了しないように見えるのはなぜですか?

  23. 23

    参照がメモリを消費するのはなぜですか?

  24. 24

    Linux上の私のサービスがCPUを大量に消費するのはなぜですか?

  25. 25

    列がまばらなパンダのデータフレームがより多くのメモリを消費するのはなぜですか?

  26. 26

    大きなJava配列を作成すると、メモリが大量に消費されるのはなぜですか?

  27. 27

    7人のユーザー、仮想メモリの異常な使用、大量のストリーム接続、すべてのプロセスのスリープが表示されるのはなぜですか?

  28. 28

    MySQLがこれほど多くのメモリを消費するのはなぜですか?

  29. 29

    このコードを実行しようとすると、大量のメモリが消費されます

ホットタグ

アーカイブ