Das Vorhandensein bestimmter Laufwerke kann für den erfolgreichen Ablauf der IT sehr wichtig sein. In diesem Artikel möchte ich beschreiben, wie Du mit Hilfe der Windows Powershell eine Laufwerkverbindung Remote prüfen kannst.

Im konkreten Fall gab es das Problem, dass ein Laufwerk, das mit Hilfe eines USB-Servers* eingebunden war, durch einen Benutzerfehler getrennt wurde. Dadurch kam es dann wiederum zu diversen Fehlermeldungen und Abbrüchen in einer Software.

Aus diesem Grund habe ich ein Skript installiert, dass die Verbindung remote über die Powershell überprüft und dem zuständigen Administrator eine E-Mail schickt, wenn die Laufwerkverbindung nicht vorhanden ist. Ist das Laufwerk korrekt verbunden, dann wird keine E-Mail geschickt.

Das Skript lasse ich dann über die Aufgabenplanung in regelmäßigen Abständen ausführen, sodass ich automatisch benachrichtigt werde, sobald das Laufwerk mal wieder nicht vorhanden sein sollte.

Bestehende Laufwerkverbindung per Skript prüfen

Im ersten Teil des Skriptes wird der Name des Remoteservers, sowie der zu überprüfende Laufwerkbuchstabe eingetragen. Im unteren Bereich muss der E-Mailserver sowie der Absender und der Empfänger der E-Mail hinterlegt werden.

# Zielserver und Laufwerkbuchstabe definieren
$remoteServer = "ZielServerName"
$driveLetter = "X:"

# Skript, das auf dem entfernten Server ausgeführt wird
$scriptBlock = {
    param($driveLetter)
    Get-PSDrive -Name $driveLetter.TrimEnd(':')
}

# Überprüfen, ob das Laufwerk auf dem entfernten Server vorhanden ist
if (-not (Invoke-Command -ComputerName $remoteServer -ScriptBlock $scriptBlock -ArgumentList $driveLetter))
{
    # E-Mail Parameter
    $smtpServer = "IhrExchangeServer"   # Exchange Server Adresse
    $from = "admin@example.com"         # Absenderadresse
    $to = "administrator@example.com"   # Empfängeradresse
    $subject = "Laufwerk $driveLetter nicht gefunden auf $remoteServer"
    $body = "Das Laufwerk $driveLetter wurde auf dem Server $remoteServer nicht gefunden."

    # Senden der E-Mail
    Send-MailMessage -SmtpServer $smtpServer -From $from -To $to -Subject $subject -Body $body
}

Überprüfung der Laufwerk Verbindung auf dem lokalen Server

Für den Fall, dass die Überprüfung lokal erfolgen soll, ist das Skript etwas kürzer, da wir den Befehl ja direkt auf dem betreffenden Server ausführen lassen können.

# Definieren des Laufwerkbuchstabens, der überprüft werden soll
$driveLetter = "X:"

# Überprüfen, ob das Laufwerk vorhanden ist
if (!(Get-PSDrive | Where-Object { $_.Name -eq $driveLetter.TrimEnd(':') }))
{
    # E-Mail Parameter
    $smtpServer = "IhrExchangeServer"   # Exchange Server Adresse
    $from = "admin@example.com"         # Absenderadresse
    $to = "administrator@example.com"   # Empfängeradresse
    $subject = "Laufwerk $driveLetter nicht gefunden"
    $body = "Das Laufwerk $driveLetter wurde auf dem Server nicht gefunden."

    # Senden der E-Mail
    Send-MailMessage -SmtpServer $smtpServer -From $from -To $to -Subject $subject -Body $body
}

Ebenfalls interessant:

Powershell Skripte zum Download - z.B.: Laufwerkverbindung Remote prüfen