Powershell स्क्रिप्ट का उपयोग करके AD उपयोगकर्ता और उससे संबद्ध फ़ोल्डर हटाएं


0

क्या AD उपयोगकर्ता और उससे संबद्ध फ़ोल्डर को हटाना संभव है? फ़ोल्डर संरचना है:

D:\Users\Profiles
D:\Users\Redirect
D:\Users\Data

मैं निम्नलिखित स्क्रिप्ट का उपयोग करने की कोशिश कर रहा हूं जो उन उपयोगकर्ताओं को हटा देता है जो 90 दिनों के भीतर लॉग इन नहीं हुए हैं। ये है नहीं मैं क्या चाहता हूँ।

function Delete-ADUser
{
    Param($userName = $(throw 'Enter a username to delete'))
    $searcher = New-Object System.DirectoryServices.DirectorySearcher([ADSI]"","(&(objectcategory=user)(sAMAccountName=$userName))")
    $user = $searcher.findone().GetDirectoryEntry()
    $user.psbase.DeleteTree()
}


$NumDays = 90
$LogDir = ".\Removed-User-Accounts.log"

$currentDate = [System.DateTime]::Now
$currentDateUtc = $currentDate.ToUniversalTime()
$lltstamplimit = $currentDateUtc.AddDays(- $NumDays)
$lltIntLimit = $lltstampLimit.ToFileTime()
$adobjroot = [adsi]''
$objstalesearcher = New-Object System.DirectoryServices.DirectorySearcher($adobjroot)
$objstalesearcher.filter = "(&(objectCategory=person)(objectClass=user)(lastLogonTimeStamp<=" + $lltIntLimit + "))"
$users = $objstalesearcher.findone()

Write-Output `n`n"----------------------------------------" "ACCOUNTS OLDER THAN "$NumDays" DAYS" "PROCESSED ON:" $currentDate "----------------------------------------" `
| Out-File $LogDir -append

if ($users.Count -eq 0)
{
       Write-Output "  No account needs to be removed." | Out-File $LogDir -append
}
else
{
       foreach ($user in $users)
       {
              # Read the user properties
              [string]$adsPath = $user.Properties.adspath
              [string]$displayName = $user.Properties.displayname
              [string]$samAccountName = $user.Properties.samaccountname
              [string]$lastLogonInterval = $user.Properties.lastlogontimestamp

              # Delete the user
              Delete-ADUser $samAccountName

              # Convert the date and time to the local time zone
              $lastLogon = [System.DateTime]::FromFileTime($lastLogonInterval)

              Write-Output "  Removed user " $displayName" | Username: "$samAccountName" | Last Logon: "$lastLogon"`n" `
              | Out-File $LogDir -append
       }
}

प्रश्न: मैं उस स्क्रिप्ट को कैसे संशोधित करूं जो मुझसे उपयोगकर्ता नाम दर्ज करने और उसके फ़ोल्डर्स को हटाने के लिए कहेगी?


डोमेन उपयोगकर्ता और उन फ़ोल्डरों के बीच क्या संबंध है?
evilSnobu

@kamikatze वे उपयोगकर्ता डोमेन उपयोगकर्ता हैं। मैं जा सकता था और मैन्युअल रूप से उपयोगकर्ता और फिर उनके फ़ोल्डर्स को हटा सकता था लेकिन मैं इसे एक बार में करने की सोच रहा था।
Valentin Bajrami

वे फ़ोल्डर कहाँ स्थित हैं? क्लाइंट कंप्यूटर पर? कुछ नेटवर्क शेयर पर?
evilSnobu

@kamikatze ये फ़ोल्डर साझा किए गए फ़ोल्डर हैं, इसलिए \\addsServer\$Profiles\%username% और इसी तरह
Valentin Bajrami

जवाबों:


1

यह मानते हुए कि आप इसे "AddServer" पर चला रहे हैं, इसलिए $ प्रोफ़ाइलपाथ मशीन के लिए स्थानीय है, और D: \ Profiles \ username उपयोगकर्ता प्रोफ़ाइल को संग्रहीत करता है।

$GoodbyeList = 'JDoe', 'KDoe', 'LDoe'
$profilePath = 'D:\Profiles'

foreach ($user in $GoodbyeList) {
    Remove-ADUser -Identity $user
    Remove-Item "$profilePath\$user" -Recurse -Force -Verbose
}

अच्छी तरह से काम करता है! क्या उपयोगकर्ता नाम को पैरामीटर के रूप में प्रदान करना संभव है?
Valentin Bajrami

ठीक है, सब अब तय हो गया। बहुत बहुत धन्यवाद!
Valentin Bajrami

केवल भविष्य के संदर्भ के लिए: पहली पंक्ति को इसके साथ बदलें: param ([Parameter(Mandatory=$true)] [string[]]$GoodbyeList)
evilSnobu

0

यदि आपके उपयोगकर्ता होम निर्देशिकाओं के लिए सामान्य रूट स्थान साझा नहीं करते हैं, तो आप फ़ोल्डर्स को हटाने से पहले प्रत्येक उपयोगकर्ता के लिए होम निर्देशिका विशेषताओं को क्वेरी कर सकते हैं

foreach ($ अलविदा में $ उपयोगकर्ता) {     निकालें-ADUser -Identity $ उपयोगकर्ता     $ homeDirectory = (Get-ADUser $ user -Properties होमडायरेक्टरी | Select-Object -ExpandProperty homeDirectory)     निकालें-आइटम "$ homeDirectory" -Recurse -Force -Verbose }

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.