List and mail inactive computers in local AD

Script

Dit script kan je gebruiken voor het oplijsten & het daarna e-mailen van pc’s die ouder zijn dan 52 weken. Dit script kan je koppelen aan een task in de task schedular zodat je op regelmatige tijd een e-mail krijgt met een opsomming van welke pc’s al een lange tijd niet meer actief zijn.

Open het script in powershell ISE, Vs code of notepad en wijzig de place holders naar de juiste settings bij de onderstaande settings in het script:

  • From =
  • To =
  • SmtpServer =
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# Voer de Dsquery uit en sla de resultaten op in een variabele
$old_PC = Dsquery computer -inactive 52 -limit 0

# De HTML-template die de pc's oplijst
$EmailBody = @"
<html>
<body>
<p>Hier is een lijst van oude computers die al 52 weken inactief zijn:</p>
<ul>
"@

foreach ($pc in $old_PC) {
    $EmailBody += "<li>$pc</li>`n"
}

$EmailBody += @"
</ul>
</body>
</html>
"@

# Ophalen home folder active user
$userProfilePath = [Environment]::GetFolderPath("UserProfile")

# Temp folder check in home folder user
$tempFolderPath = Join-Path -Path $userProfilePath -ChildPath "Temp"
if (!(Test-Path -Path $tempFolderPath)) {
    # Maakt de Temp folder aan als deze niet bestaat
    New-Item -ItemType Directory -Path $tempFolderPath | Out-Null
}

# Controleert of het wachtwoordbestand al bestaat
$securePassFile = Join-Path -Path $tempFolderPath -ChildPath "securePass.txt"
if (Test-Path -Path $securePassFile) {
    # Leest het wachtwoord uit het bestand
    $PasswordFromFile = Get-Content $securePassFile | ConvertTo-SecureString
} else {
    # Prompt voor gebruikersnaam en wachtwoord
    $Username = Read-Host "Voer uw gebruikersnaam in:"
    $Password = Read-Host "Voer uw wachtwoord in:" -AsSecureString
    $PasswordFromFile = $Password

    # Slaagt het wachtwoord op in het bestand
    $Password | ConvertFrom-SecureString | Set-Content $securePassFile
}

# Maak een PSCredential object met de gebruikersnaam en het wachtwoord
$mailcreds = New-Object System.Management.Automation.PSCredential ($Username, $PasswordFromFile)

$sendMailMessageSplat = @{
    From = '<from e-mail>'
    To = '<To e-mail>'
    Subject = 'Lijst van PCs die langer inactief staan dan 52 weken'
    Body = $EmailBody
    BodyAsHtml = $true
    Priority = 'normal'
    DeliveryNotificationOption = 'OnSuccess', 'OnFailure'
    SmtpServer = '<SMTP server>'
    Port = 587
    UseSsl = $true
    Credential = $mailcreds
}

Send-MailMessage @sendMailMessageSplat

AD user

  1. Open AD en maak een gebruiker aan met een naam naar wens
  2. Open de properties van de gebruiker en ga naar de “member of” tab
  3. Geef de gebruiker “Read-Only Domain Controller " rechten in AD (Deze rechten zijn nodig om de nodige data te kunnen lezen uit AD)

Local Security Policy

  1. Meld aan op de server waar je de taak wil aanmmaken
  2. Open “local security policy” door run te open en “secpol.msc” in te geven
  3. Navigeer naar > Security Settings – Local Policies – User Rights Assignment node
  4. Open de “Batch job” policy
  5. Voeg de net aangemaakt gebruiker toe
  6. Save

Task schedular

  1. Open task schedular
  2. Klik op “create task”
  3. Geef de taak een naam & een beschrijving

Vermijd qoutes ’ in de naam, dit geeft fouten bij het uitvoeren van de taak

  1. Zorg dat bij “When running the task, use the following user account:” dat de nieuw aangemaakt user hier is ingevuld
  2. Ga naar de tab “Triggers” & klik op “new”
  3. Geef de onderstaande gegevens in: drawing
    • Deze settings gaan er voor zorgen dat de task elke eerste dinsdag wordt uitgevoerd
  4. Klik oke
  5. Navigeer naar de “actions” tab & klik op “new”
  6. Geef de onderstaande settings op:
    • Action: Start a program
    • Program/ script: Powershell
    • Add arguments (optional): -NoProfile -ExecutionPolicy Bypass -File "CC:\Users\ydh\Temp\InactivePC.ps1"
  7. Klik oke
  8. Navigeer naar “Settings”
  9. Geef de onderstaande settings in: drawing
  10. Probeer nu de taak uit te voeren & kijk na of je de mail hebt ontvangen