Вы действительно перестали делать это с помощью командлета Get-ADUser
.
Если я правильно понимаю вопрос, вы хотели бы получить список всех пользовательских объектов в этом подразделении, которые не были изменены дляболее 6 месяцев (хотя ваш код предлагает 10 дней ..).
Затем, если этот пользовательский объект включен, вы хотите отключить его, и если пользовательский объект уже был отключен, вам необходимо удалить его.
В таком случае это должно быть сделано:
$refDate = (Get-Date).AddMonths(-6) # test for users that have been in this OU for more than 6 months
Get-ADUser -Filter * -SearchBase 'OU=testOU,DC=fire,DC=cloud' -Properties DisplayName, Modified | ForEach-Object {
# iterating over this user collection means that in each run, the $_ automatic variable contains a single user
if ($_.Modified -lt $refDate) {
if ($_.Enabled) {
Write-Host "Disabling user $($_.DisplayName)" -ForegroundColor Yellow
$_ | Disable-ADAccount
}
else {
Write-Host "Deleting user $($_.DisplayName)" -ForegroundColor Magenta
$_ | Remove-ADUser
}
}
}
Благодаря
Lee_Daily .Если вам нужно сравнить дату с
полночь из X месяцев назад (в основном, пропустите временную часть даты), измените объявление
$refDate
на
$refDate = (Get-Date).Date.AddMonths(-6)
и изменитетест на
if ($_.Modified.Date -lt $refDate) {
В соответствии с вашим комментарием выписать CSV для всех пользователей, которые были отключены / удалены вышеуказанной функцией, вы можете реализовать это с помощью:
$today = Get-Date
$refDate = $today.Date.AddMonths(-6) # test for users that have been in this OU for more than 6 months
$result = Get-ADUser -Filter * -SearchBase 'OU=testOU,DC=fire,DC=cloud' -Properties DisplayName, Modified | ForEach-Object {
# iterating over this user collection means that in each run, the $_ automatic variable contains a single user
if ($_.Modified.Date -lt $refDate) {
# create an object with some details about the user for export to CSV
$out = [PsCustomObject]@{
'UserName' = $_.DisplayName
'AccountName' = $_.SamAccountName
'Date' = $today
'Action' = ''
}
if ($_.Enabled) {
Write-Host "Disabling user $($_.DisplayName)" -ForegroundColor Yellow
$out.Action = 'Disabled'
$_ | Disable-ADAccount
}
else {
Write-Host "Deleting user $($_.DisplayName)" -ForegroundColor Magenta
$out.Action = 'Deleted'
$_ | Remove-ADUser
}
# emit the PsCustomObject so it gets collected in variable $result
$out
}
}
if ($result) {
# output the $result collection to screen
$result
# output to a CSV file
$result | Export-Csv -Path 'Ex-users.csv' -NoTypeInformation
}
else { "No users were deleted or disabled" }