終了したユーザーを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を消費する可能性があるのは、コード内の2つだけです。
ここにいくつかのベストプラクティスがあります
理想的なPowerShellスクリプト:
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加