Admin Tools / Automatisierung

Kleine Helfer aus meinem Alltag als IT / Dev / Automatisierung. Fokus: weniger klicken, mehr liefern.

🧑‍💼
AD-Benutzer anlegen

Erstellt neuen User im Active Directory mit SamAccountName, UPN, OU, Passwort und aktiviert ihn direkt. Kein GUI-Geklicke.

PowerShell
        New-ADUser -Name $DisplayName `
        -SamAccountName $Sam `
        -UserPrincipalName "$Sam@firma.local" `
        -Path "OU=User,OU=Standort,DC=firma,DC=local" `
        -Enabled $true `
        -AccountPassword (ConvertTo-SecureString $Pw -AsPlainText -Force)
    
Anfrage stellen
🖥️
Systeminfo / Inventarisierung

Hostname, OS, Uptime, CPU, RAM. Perfekt für Tickets: „Was läuft da?“

PowerShell
        $os    = Get-CimInstance Win32_OperatingSystem
        $cpu   = Get-CimInstance Win32_Processor
        $memGB = [math]::Round($os.TotalVisibleMemorySize/1MB,2)

        [pscustomobject]@{
          ComputerName = $env:COMPUTERNAME
          OS           = $os.Caption
          Uptime       = ((Get-Date) - $os.LastBootUpTime).ToString()
          CPU          = $cpu.Name
          RAM_GB       = $memGB
        } | Format-List
    
Geplanten Task anlegen

Legt einen geplanten Task an, der ein Script z. B. täglich um 02:00 Uhr ausführt.

PowerShell
        $action = New-ScheduledTaskAction -Execute "powershell.exe" `
          -Argument "C:\Scripts\backup.ps1"

        $trigger = New-ScheduledTaskTrigger -Daily -At 2am

        Register-ScheduledTask -TaskName "NightlyBackup" `
          -Action $action -Trigger $trigger `
          -Description "Backup läuft täglich um 02:00"
    
🔍
Dateien & Inhalte finden

Mini-Forensik: durchsucht ein Verzeichnis rekursiv nach Dateien, die ein Suchwort enthalten (z. B. "Exception").

C#
📤
AD-User-Export → Excel

Holt Benutzerinfos aus dem Active Directory (DisplayName, SamAccountName, Abteilung, Mail) und schreibt direkt eine .xlsx-Datei. Praktisch für Audit / Lizenz / Onboarding-Übersicht.

PowerShell
        # Voraussetzung:
        #   Import-Module ActiveDirectory
        #   Import-Module ImportExcel   # (PowerShell Gallery: ImportExcel)

        $users = Get-ADUser -Filter * `
          -Properties DisplayName,Department,Mail |
          Select-Object DisplayName,
                        SamAccountName,
                        Department,
                        Mail

        $xlsxPath = "C:\temp\ad_users.xlsx"

        $users | Export-Excel -Path $xlsxPath -WorksheetName "Users" -AutoSize

        Write-Host "Export fertig:" $xlsxPath
    
📑
AD-User-Export → Excel (C#)

Liest AD-User über DirectoryServices aus und bereitet die Daten für Excel auf. Die Excel-Erstellung unten nutzt z. B. ClosedXML.

C#
        // NuGet:
        //   System.DirectoryServices.AccountManagement
        //   ClosedXML  (oder EPPlus)

        // using System.DirectoryServices.AccountManagement;
        // using ClosedXML.Excel;

        public class AdUserInfo {
            public string DisplayName { get; set; }
            public string SamAccountName { get; set; }
            public string Department { get; set; }
            public string Mail { get; set; }
        }

        public static List GetAdUsers() {
            var list = new List();

            using (var ctx = new PrincipalContext(
                ContextType.Domain, "FIRMA.LOCAL"))
            {
                using (var q = new UserPrincipal(ctx))
                using (var searcher = new PrincipalSearcher(q))
                {
                    foreach (var r in searcher.FindAll()) {
                        if (r is UserPrincipal u) {
                            list.Add(new AdUserInfo {
                                DisplayName     = u.DisplayName,
                                SamAccountName  = u.SamAccountName,
                                Department      = u.GetUnderlyingObject()
                                                  is DirectoryEntry de
                                  ? (string)de.Properties["department"].Value
                                  : null,
                                Mail            = u.EmailAddress
                            });
                        }
                    }
                }
            }

            return list;
        }

        public static void ExportToExcel(List users,
                                        string path) {
            using (var wb = new XLWorkbook()) {
                var ws = wb.Worksheets.Add("Users");
                ws.Cell(1,1).Value = "DisplayName";
                ws.Cell(1,2).Value = "SamAccountName";
                ws.Cell(1,3).Value = "Department";
                ws.Cell(1,4).Value = "Mail";

                int row = 2;
                foreach (var u in users) {
                    ws.Cell(row,1).Value = u.DisplayName;
                    ws.Cell(row,2).Value = u.SamAccountName;
                    ws.Cell(row,3).Value = u.Department;
                    ws.Cell(row,4).Value = u.Mail;
                    row++;
                }

                ws.Columns().AdjustToContents();
                wb.SaveAs(path);
            }
        }

        // Usage:
        var data = GetAdUsers();
        ExportToExcel(data, @"C:\temp\ad_users.xlsx");