Powershell Pfad überprüfen
Hi @ PS Profis,
Irgendwie seh ich den Wald vor lauter Bäumen nicht. (oder es ist einfach Zeit für Feierabend)
Er geht mir IMMER in den Zweig:
Die äußere if Abfrage erkennt er noch korrekt, also ob was im Textfeld drinnen steht oder nicht.
Die Innere mit der Validierung des Pfades geht immer auf $true.
;(
Gruß vom H41mSh1C0r
function Validate-Path
{
[OutputType([Boolean])]
param([string]$Path)
if ($Path -eq $null -or $Path -eq "")
{
return $false
}
$invalidChars = [System.IO.Path]::GetInvalidPathChars();
foreach ($pathChar in $Path)
{
foreach ($invalid in $invalidChars)
{
if ($pathChar -eq $invalid)
{
return $false
}
}
}
return $true
}
$btn_Hash_Click = {
$rtb_result.Clear()
if ($tb_FolderSource.Text -gt "") {
$validate_returnSource = Validate-Path -Path $tb_FolderSource
if ($validate_returnSource -eq $true)
{
$rtb_result.AppendText("Pfad gültig: "+$validate_returnSource)
}
else
{
$rtb_result.AppendText("Pfad nicht gültig: " + $validate_returnSource)
}
}
else
{
$rtb_result.AppendText("Kein Text enthalten `n")
}
}
Irgendwie seh ich den Wald vor lauter Bäumen nicht. (oder es ist einfach Zeit für Feierabend)
Er geht mir IMMER in den Zweig:
$rtb_result.AppendText("Pfad gültig: "+$validate_returnSource)
Die äußere if Abfrage erkennt er noch korrekt, also ob was im Textfeld drinnen steht oder nicht.
Die Innere mit der Validierung des Pfades geht immer auf $true.
;(
Gruß vom H41mSh1C0r
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 290407
Url: https://administrator.de/contentid/290407
Ausgedruckt am: 24.11.2024 um 00:11 Uhr
11 Kommentare
Neuester Kommentar
N'Abend.
Gruß grexit
Validate-Path -Path $tb_FolderSource
Fällt dir hier was auf , hier übergibst du das Objekt anstatt des Textes ....Gruß grexit
Hallo Heim...,
zum Fehler siehe Kommentar von @122990...
Ich mach die Überprüfung von Pfad und Dateiangaben immer mit dieser Funktion:
Sie hat eine Option zur Überprüfung von purem Pfad
oder einzelnem Dateinamen:
Vielleicht kannst du es mal gebrauchen
Grüße Uwe
zum Fehler siehe Kommentar von @122990...
Ich mach die Überprüfung von Pfad und Dateiangaben immer mit dieser Funktion:
function Validate-Path( [parameter(Mandatory=$true)][string]$path, [parameter(Mandatory=$true)][ValidateSet('DirectoryName','FileName')]$type){
switch($type){
'Directoryname'{if ($path -match "[$(([System.IO.Path]::GetInvalidPathChars() | %{"\x"+([byte][char]$_).toString('X').PadLeft(2,"0")}) -join '')]"){return $false}else{return $true}}
'Filename'{if ($path -match "^com[1-9]|^lpt[1-9]|^con|^nul|^prn|[$(([System.IO.Path]::GetInvalidFileNameChars() | %{"\x"+([byte][char]$_).toString('X').PadLeft(2,"0")}) -join '')]"){return $false}else{return $true}}
}
}
Validate-Path 'C:\ordner' -type DirectoryName
Validate-Path 'dateiname.txt' -type FileName
Vielleicht kannst du es mal gebrauchen
Grüße Uwe
Das allein hat allerdings nicht gereicht. =)
Weiß hier ja keiner was das Skript alles überprüfen / bewirken soll ... Na egal Hauptsache es hat geschnackelt
Ach so, ich dachte du prüfst hier nur die Pfad-"Gültigkeit" und nicht die "Verfügbarkeit". Da haben wir uns missverstanden.
Zitat von @122990:
Ach so, ich dachte du prüfst hier nur die Pfad-"Gültigkeit" und nicht die "Verfügbarkeit". Da haben wir uns missverstanden.
So dachte ich übrigens auch Ach so, ich dachte du prüfst hier nur die Pfad-"Gültigkeit" und nicht die "Verfügbarkeit". Da haben wir uns missverstanden.
Meine Funktionen oben tun auch nur das, also nur die Gültigkeit der Eingaben prüfen und nicht die tatsächliche Verfügbarkeit, das macht ja Test-Path schon.
Ja klar, wenn der Pfad auf dem System unter dem aktuellen Account verfügbar ist, geht das natürlich, gäbe ja auch Situationen in denen das nicht so ist