Windows-Autostart nur an Wochentagen mit automatischer Fensterplatzierung (PowerShell & Aufgabenplaner)

Symbolbild zum Windows-Autostart nur an Wochentagen mit Aufgabenplanung und PowerShell

Der Windows-Autostart kann schnell ausarten – besonders, wenn Programme unnötig auch am Wochenende mitstarten. In diesem Beitrag zeige ich dir, wie du den Windows-Autostart nur an Wochentagen realisierst, inklusive gezielter Fensterplatzierung auf dem richtigen Monitor. Damit wird dein Setup nicht nur effizienter, sondern auch smarter.

👉 Tipp: Du nutzt bereits PowerShell für dein Smart Home? Dann schau dir auch meinen Beitrag zur automatisierten Gerätesteuerung mit ioBroker und PowerShell an.


✅ Was du hier lernst – Windows-Autostart nur an Wochentagen

  • Wie du Programme nur an bestimmten Tagen und Zeiten automatisch starten lässt
  • Wie du Fenster automatisch auf einem bestimmten Monitor positionierst
  • Wie sich das auch mit Windows-Store-Apps umsetzen lässt
  • Wie du das alles mit einem einzigen PowerShell-Skript steuerst
  • Bonus: Yoast-kompatibel, suchmaschinenfreundlich und clean ✨

📅 Warum der Windows-Autostart nur an Wochentagen sinnvoll ist

Der klassische Autostart in Windows lässt sich nur global aktivieren oder deaktivieren – das heißt: Entweder ein Programm startet immer, oder nie.

Aber was, wenn du willst, dass:

  • deine Arbeitstools nur von Montag bis Freitag automatisch starten?
  • Programme erst ab einer bestimmten Uhrzeit starten sollen?
  • Fenster immer auf Monitor 2 oder 3 erscheinen – z. B. im Hochkant-Layout?

Mit PowerShell + Aufgabenplaner ist das kein Problem.

🔗 Weitere Infos zur Windows Aufgabenplanung bei Microsoft


🛠️ Das PowerShell-Skript für den Windows-Autostart nur an Wochentagen

Dieses Skript:

  • startet beliebige Programme,
  • unterscheidet zwischen klassischen .exe-Dateien und Windows Store-Apps,
  • positioniert Fenster automatisch auf einem bestimmten Bildschirm
  • und führt das Ganze nur an Wochentagen und in einem bestimmten Uhrzeitfenster aus.

Beispiel: Store-App + klassisches EXE-Fenster platzieren

# Importiere das Windows.Forms-Assembly, um Informationen über Bildschirme zu bekommen
Add-Type -AssemblyName System.Windows.Forms

# Aktuelles Datum und Uhrzeit abrufen
$now = Get-Date
$weekday = $now.DayOfWeek
$hour = $now.Hour

# Nur an Wochentagen (Mo–Fr) zwischen 6 und 15 Uhr ausführen
if (
    ($weekday -ne 'Saturday' -and $weekday -ne 'Sunday') -and
    ($hour -ge 6 -and $hour -lt 15)
) {
    # Beispiel 1: Windows-Store-App starten (z. B. Microsoft Teams oder Spotify)
    # Wichtig: Store-Apps benötigen Protokollstart wie "msteams:" oder "spotify:"
    Start-Process "msteams:"

    # Beispiel 2: Klassische .exe-Anwendung starten (hier mit Beispielpfad)
    $appPath = "C:\Programme\MeineApp\MeinTool.exe"
    $appProc = Start-Process $appPath -PassThru

    # Kurze Pause, damit das Fenster der App vollständig geladen ist
    Start-Sleep -Seconds 5

    # API-Funktion einbinden, um Fenster verschieben zu können
    Add-Type @"
using System;
using System.Runtime.InteropServices;
public class WinAPI {
    [DllImport("user32.dll")]
    public static extern bool MoveWindow(IntPtr hWnd, int X, int Y, int nWidth, int nHeight, bool bRepaint);
}
"@

    # Bildschirminformationen abrufen – z. B. für Multimonitor-Setups
    $screens = [System.Windows.Forms.Screen]::AllScreens

    # Ziel: Monitor 3 (Index 2), falls vorhanden – sonst letzter Monitor als Fallback
    if ($screens.Count -ge 3) {
        $screen = $screens[2]
    } else {
        $screen = $screens[$screens.Count - 1]
    }

    # Position und Größe für untere Bildschirmhälfte berechnen
    $x = $screen.WorkingArea.X
    $width = $screen.WorkingArea.Width
    $halfHeight = [int]($screen.WorkingArea.Height / 2)
    $yBottom = $screen.WorkingArea.Y + $halfHeight

    # Fensterhandle suchen: bis zu 20 Versuche mit je 0,5 Sekunden Pause
    # Hintergrund: Manche Fenster erscheinen zeitverzögert oder starten unsichtbar
    $handle = $null
    for ($i = 0; $i -lt 20; $i++) {
        # Prüfen, ob ein Prozess mit passendem Fenstertitel existiert
        $proc = Get-Process | Where-Object { $_.MainWindowTitle -like "*MeinTool*" }

        if ($proc) {
            # Wenn ein gültiges Fensterhandle vorhanden ist, abbrechen
            $handle = $proc.MainWindowHandle
            if ($handle -ne 0) { break }
        }

        # Kurze Wartezeit, bevor erneut geprüft wird
        Start-Sleep -Milliseconds 500
    }

    # Wenn ein gültiges Fensterhandle gefunden wurde: Fenster verschieben
    if ($handle -ne 0) {
        [WinAPI]::MoveWindow([intptr]$handle, $x, $yBottom, $width, $halfHeight, $true)
    }
}

🔄 Programme zeitgesteuert mit Aufgabenplaner starten

  1. Öffne den Aufgabenplaner (taskschd.msc)
  2. Klicke auf „Aufgabe erstellen“
  3. Reiter „Allgemein“:
    • Name: Zeitgesteuerter Programmstart
    • Haken bei „Mit höchsten Privilegien ausführen“
  4. Reiter „Trigger“:
    • Neuer Trigger: „Bei Anmeldung“
    • Optional: Haken bei „Verzögern um: 30 Sekunden“
  5. Reiter „Aktionen“:
    • Programm: powershell.exe
    • Argumente: -ExecutionPolicy Bypass -File "C:\Scripts\mein_autostart_script.ps1"
  6. Speichern – fertig!

🔗 Weitere Details zur PowerShell Get-Date Funktion bei Microsoft


🧠 Pro-Tipps für deinen Autostart unter Windows

Wenn du mehrere Tools auf mehreren Monitoren „in Position bringen“ willst, kannst du das Skript einfach erweitern. Mehrere Fenster gleichzeitig zu verschieben ist kein Problem – solange du die Fenstertitel kennst, klappt das wunderbar.

🔗 Schau dir z. B. AutoHotkey oder nircmd von NirSoft an, wenn du noch mehr Kontrolle brauchst.

📚 Oder stöbere durch passende PowerShell-Beispiele auf GitHub


📋 Fazit – Windows-Autostart nur an Wochentagen automatisieren

Mit PowerShell und dem Aufgabenplaner kannst du dir ein richtig smartes Autostart-System bauen – das nicht nur nach Uhrzeit und Wochentagen reagiert, sondern auch deine Fenster genau da platziert, wo du sie brauchst.

Kein manuelles Schieben mehr. Kein Autostart-Wildwuchs. Einfach nur: sauber, gezielt, nerdig gut.

prokrastinerd approved!

🔧 Nerd-Tools für dein Windows-Autostart-Setup

Wenn du dein System weiter optimieren willst, sind hier ein paar nützliche Tools, die perfekt zu diesem Beitrag passen – für mehr Effizienz, Kontrolle und nerdige Freude.

  • Windows PowerShell: Grundlagen & Scripting-Praxis für Einsteiger* (bezahlter Link)
    Ein sehr gut bewertetes deutsches Buch, das PowerShell praxisnah erklärt. Ideal, wenn du tiefer einsteigen willst.
  • Elgato Stream Deck (MK.2)* (bezahlter Link)
    Das kennt inzwischen fast jeder: das Stream Deck von Elgato. Ursprünglich für Streamer gedacht, hat es längst seinen Weg in produktive Setups gefunden. Mit frei belegbaren Tasten kannst du PowerShell-Skripte, App-Starts oder Fensteranordnungen mit einem einzigen Knopfdruck auslösen – perfekt für alle, die ihren Workflow lieben (und gern ein bisschen automatisieren).
  • BONTEC Monitor Halterung 2 Monitore für 13-27 Zoll* (bezahlter Link)
    Flexibel verstellbarer Monitorarm – ideal, wenn du wie im Beitrag mit Hochkant-Monitoren arbeitest und Ordnung auf dem Schreibtisch willst.