Задача кажется тривиальной! Многие пользователи приходят и уходят в нашу среду. Время от времени я хочу проверить папки «роуминг» для «сирот» и избавиться от них. Мой код работает, если имя пользователя точно совпадает с именем папки, но не для папок, где Windows добавила .V2, .V3 и т. Д. Например. -eq работает, но не-like или -contains, или любой из способов, которые я пытался вставить подстановочный знак. Я попытался построить объект-объект и не смог.Использование Powershell для очистки сирот Папки профиля пользователя Active Directory
Например, если у нас есть пользователь bob.smith, я не хочу, чтобы мой список «сирот» включал папки профилей с именем bob.smith или bob.smith.V2.
Вот мой код:
# Put profile folder names in array
$profilefolders = Get-ChildItem -Name "\\server\profiles$"
# Initialize arrays
$orphanprofiles = @()
foreach ($userprofile in $profilefolders)
{
# Do profile names match up with user accounts?
If(Get-ADUser -Filter {SamAccountName -eq $userprofile})
{
# User account exists: no action
}
Else
{
# Profile is an orphan. Add to list.
$orphanprofiles += $userprofile
}
}
# put array values in a string variable with newline char for screen output
$outputprofiles = $orphanprofiles -join "`n"
Write-Output "`n"
Write-Output "Orphan profiles: `n$outputprofiles"
Write-Output " "
Удивительный! Первый ответ работает, второй генерирует кучу красного цвета, начиная с! на линии 8. Там есть куча вещей, которые я не понимаю, поэтому я буду читать. Большое спасибо за повышение на кривой обучения. – SKaye
Drat! # 1 - это не ответ: я не хочу игнорировать каждую папку с добавлением .Vx, просто игнорирую часть .Vx. – SKaye
@SKaye Я изменил второй скрипт на наличие дополнительной пары круглых скобок с помощью оператора '!' Not. У меня дома нет дома, поэтому он не может его протестировать. – LotPings