Powershell Pfad überprüfen
H41mSh1C0R (Level 3) - Jetzt verbinden
08.12.2015, aktualisiert 19:32 Uhr, 2419 Aufrufe, 11 Kommentare
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
11 Antworten
- LÖSUNG 122990 schreibt am 08.12.2015 um 18:40:11 Uhr
- LÖSUNG H41mSh1C0R schreibt am 08.12.2015 um 19:29:44 Uhr
- LÖSUNG 122990 schreibt am 08.12.2015 um 19:34:39 Uhr
- LÖSUNG H41mSh1C0R schreibt am 08.12.2015 um 19:38:22 Uhr
- LÖSUNG 122990 schreibt am 08.12.2015 um 19:47:51 Uhr
- LÖSUNG colinardo schreibt am 08.12.2015 um 19:49:32 Uhr
- LÖSUNG H41mSh1C0R schreibt am 08.12.2015 um 19:51:09 Uhr
- LÖSUNG colinardo schreibt am 08.12.2015 um 19:52:18 Uhr
- LÖSUNG H41mSh1C0R schreibt am 08.12.2015 um 19:53:33 Uhr
- LÖSUNG colinardo schreibt am 08.12.2015 um 19:52:18 Uhr
- LÖSUNG H41mSh1C0R schreibt am 08.12.2015 um 19:51:09 Uhr
- LÖSUNG colinardo schreibt am 08.12.2015 um 19:49:32 Uhr
- LÖSUNG 122990 schreibt am 08.12.2015 um 19:47:51 Uhr
- LÖSUNG H41mSh1C0R schreibt am 08.12.2015 um 19:38:22 Uhr
- LÖSUNG 122990 schreibt am 08.12.2015 um 19:34:39 Uhr
- LÖSUNG H41mSh1C0R schreibt am 08.12.2015 um 19:29:44 Uhr
- LÖSUNG colinardo schreibt am 08.12.2015 um 19:18:58 Uhr
- LÖSUNG H41mSh1C0R schreibt am 08.12.2015 um 19:32:21 Uhr
LÖSUNG 08.12.2015, aktualisiert um 19:32 Uhr
N'Abend.
, hier übergibst du das Objekt anstatt des Textes ....
Gruß grexit
Validate-Path -Path $tb_FolderSource
Fällt dir hier was auf Gruß grexit
LÖSUNG 08.12.2015, aktualisiert um 19:32 Uhr
Hallo Heim...,
zum Fehler siehe Kommentar von @Grexit...
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 @Grexit...
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
LÖSUNG 08.12.2015 um 19:29 Uhr
*katsching* =)
Das allein hat allerdings nicht gereicht. =)
Die erste if Abfrage in der Validate Function noch um das obrige erweitert und dann kommt auch dann true oder false wann ich das möchte. =)
Denke das bekomm ich aber noch zusammengestutzt.(morgen) *g*
Gruß und danke dir aus dem Feierabend ^^
Das allein hat allerdings nicht gereicht. =)
-or (Test-path $Path) -eq $false)
Die erste if Abfrage in der Validate Function noch um das obrige erweitert und dann kommt auch dann true oder false wann ich das möchte. =)
Denke das bekomm ich aber noch zusammengestutzt.(morgen) *g*
Gruß und danke dir aus dem Feierabend ^^
LÖSUNG 08.12.2015 um 19:32 Uhr
Hallo Uwe,
auch dir danke. Ich stricke morgen am Script weiter. =)
Gruß
H41mSh1C0r
auch dir danke. Ich stricke morgen am Script weiter. =)
Gruß
H41mSh1C0r
LÖSUNG 08.12.2015, aktualisiert um 19:35 Uhr
Das allein hat allerdings nicht gereicht. =)
Weiß hier ja keiner was das Skript alles überprüfen / bewirken soll ... Na egal Hauptsache es hat geschnackelt LÖSUNG 08.12.2015 um 19:38 Uhr
Das Validate-Path was im Ausgangspost drin ist ist ohne die Anpassung immer auf true gelaufen. =)
Egal was drinnen stand.
Egal was drinnen stand.
LÖSUNG 08.12.2015 um 19:47 Uhr
Ach so, ich dachte du prüfst hier nur die Pfad-"Gültigkeit" und nicht die "Verfügbarkeit". Da haben wir uns missverstanden.
LÖSUNG 08.12.2015, aktualisiert um 19:50 Uhr
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.
LÖSUNG 08.12.2015 um 19:51 Uhr
Der Gedanke war das da gleich mitzuerschlagen.
LÖSUNG 08.12.2015, aktualisiert um 19:53 Uhr
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 
LÖSUNG 08.12.2015 um 19:53 Uhr
=) Das grübel ich morgen weiter.
Danke euch beiden und nun ab in den Feierabend. =) =)
Danke euch beiden und nun ab in den Feierabend. =) =)