install.ps1 fragt bei fehlgeschlagener Verbindung selbst nach Zugangsdaten
Test-Path auf einem UNC-Pfad fragt nie nach einem Passwort - ohne eine bereits bestehende SMB-Sitzung liefert es bei einem geschuetzten Share einfach "false", ganz ohne Fehlermeldung. Das Skript verliess sich bisher darauf, dass eine Sitzung schon von Hand aufgebaut wurde (Explorer oder "net use"), und meldete sonst "Ziel nicht erreichbar" - selbst wenn Pfad und Zugangsdaten korrekt waren. Jetzt fragt es bei fehlender Erreichbarkeit selbst nach Benutzername/Kennwort und baut die Sitzung per "net use" auf, bevor es endgueltig abbricht. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -159,7 +159,35 @@ if (-not $Ziel) {
|
||||
}
|
||||
|
||||
if (-not (Test-Path $Ziel)) {
|
||||
throw "Ziel nicht erreichbar: $Ziel - Samba-Share verbunden? Pfad korrekt?"
|
||||
# Test-Path fragt nie nach einer Anmeldung: ohne eine bereits bestehende
|
||||
# SMB-Sitzung zu diesem Server liefert es bei einem passwortgeschützten
|
||||
# Share einfach "false" - ganz ohne Fehlermeldung oder Passwortabfrage.
|
||||
# Wer den Pfad vorher nicht schon per Explorer oder "net use" verbunden
|
||||
# hatte, bekam deshalb einen irreführenden "nicht erreichbar"-Fehler, auch
|
||||
# wenn Pfad und Zugangsdaten korrekt waren. Deshalb hier selbst nachfragen
|
||||
# und die Sitzung aufbauen, statt das als manuellen Vorschritt vorauszusetzen.
|
||||
if ($Ziel -match '^\\\\') {
|
||||
Warnung "Kein Zugriff auf $Ziel - vermutlich fehlt die Anmeldung am Samba-Share."
|
||||
Write-Host ""
|
||||
$nutzer = Read-Host " Benutzername [homeassistant]"
|
||||
if (-not $nutzer) { $nutzer = "homeassistant" }
|
||||
$kennwortSicher = Read-Host " Kennwort" -AsSecureString
|
||||
$kennwort = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto(
|
||||
[System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($kennwortSicher))
|
||||
|
||||
# Eine tote Verbindung von einem vorherigen Versuch würde den
|
||||
# Neuaufbau blockieren - leise entfernen, falls vorhanden.
|
||||
& net use $Ziel /delete /y *> $null
|
||||
|
||||
& net use $Ziel /user:$nutzer $kennwort
|
||||
$kennwort = $null
|
||||
if ($LASTEXITCODE -ne 0 -or -not (Test-Path $Ziel)) {
|
||||
throw "Ziel nicht erreichbar: $Ziel - Anmeldung fehlgeschlagen oder Pfad falsch."
|
||||
}
|
||||
Gut "Angemeldet."
|
||||
} else {
|
||||
throw "Ziel nicht erreichbar: $Ziel - Pfad korrekt?"
|
||||
}
|
||||
}
|
||||
|
||||
# Ein config-Verzeichnis ohne configuration.yaml ist mit hoher Wahrscheinlichkeit
|
||||
|
||||
Reference in New Issue
Block a user