windelterrorist
Goto Top

Destination Path Abfrage mit Powershell

Guten Morgen Admins face-smile

Für eine Destinationpath Abfrage habe ich so meine Vorstellungen, kann sie aber selbst nicht wirklich umsetzen...
- Leere Eingabe verhindern und erneut abfragen
- Wenn kein "Laufwerksbuchstaben" (z.B. (C:\ oder D:\ ...)) am Anfang der Eingabe steht, oder der Laufwerksbuchstabe nicht existiert (z.B. Y:\ dabei gibt es diesen nicht), dann ebenfalls verhindern und erneut abfragen
- Wenn ein gültger Laufwerksbuchstaben eingegeben wurde, dann soll die folgende Struktur erstellt werden, z.B. :
Eingabe: C:\abcd , so wird der Ordner "abcd" im "C:\" Laufwerk erstellt


So weit bin ich mithilfe des Forums (hier) gekommen:

function Get-ValidPath($querydest){
While($true){
$input = Read-Host $querydest
if($input -ne ""){
if (Test-Path $input){
return $input
}

else{

try{
md "$input"
}

catch{
#return $input
write-host $_.Exception.Message -F Red}
}
}

else{
write-host "Sie haben keine Eingabe getätigt! Eingabe wiederholen." -ForegroundColor Yellow}
}
}

cls
$destpath = Get-ValidPath "Zielpfad eingeben"
$destpath


Das Problem wäre jetzt einfach noch, dass er die Laufwerksbuchstaben erkennen soll und überprüfen, ob diese existieren... Die leere Eingaben müssen unbedingt verhindert werden.


Danke schonmals für eure Hilfe.


Grüsse
windelterrorist

Content-ID: 293502

Url: https://administrator.de/contentid/293502

Ausgedruckt am: 22.11.2024 um 05:11 Uhr

SeriousEE
Lösung SeriousEE 19.01.2016 aktualisiert um 11:33:18 Uhr
Goto Top
Hallo,

Ich würde versuchen den eingegeben String ab dem Backslash zu splitten und nachsehen, ob die Platte gültig ist
$str = "C:\Testordner"  
$str.Split("\")  
C:

Get-WmiObject Win32_LogicalDisk | Where-Object {$_.DeviceID -eq $str.Split("\")}  


Viele Grüße
SeriousEE
TlBERlUS
Lösung TlBERlUS 19.01.2016 aktualisiert um 11:33:19 Uhr
Goto Top
Hi,

ich würde prüfen lassen, ob die Eingabe in einem Array vorhanden ist, dass du mit diesen Werten füllst.
 Get-WmiObject win32_logicaldisk  | where{$_.providername -notlike "*\\*"} | where {$_.Size -gt 0 } | select -ExpandProperty DeviceID  

Edit: zu Langsam
122990
Lösung 122990 19.01.2016 aktualisiert um 11:31:22 Uhr
Goto Top
Ein
Test-Path (Split-Path $input -Qualifier)

reicht auch um zu prüfen ob das Laufwerk eines Pfades existiert

Gruß grexit
SeriousEE
SeriousEE 19.01.2016 um 10:59:03 Uhr
Goto Top
Zitat von @122990:

Ein
> Test-Path (Split-Path $input -Qualifier)
> 
reicht auch um zu prüfen ob das Laufwerk eines Pfades existiert

Gruß grexit

Muss man neidlos als beste Lösung anerkennen, wie ich finde.
windelterrorist
windelterrorist 19.01.2016 um 11:31:44 Uhr
Goto Top
Vielen herzlichen Dank!

Hat super funktioniert, verwende die Lösung von @122990 (die andern funktionieren natürlich auch)!


Grüsse
windelterrorist