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-Key: 293502

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

Printed on: April 18, 2024 at 04:04 o'clock

Member: SeriousEE
Solution SeriousEE Jan 19, 2016 updated at 10:33:18 (UTC)
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
Member: TlBERlUS
Solution TlBERlUS Jan 19, 2016 updated at 10:33:19 (UTC)
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
Mitglied: 122990
Solution 122990 Jan 19, 2016 updated at 10:31:22 (UTC)
Goto Top
Ein
Test-Path (Split-Path $input -Qualifier)

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

Gruß grexit
Member: SeriousEE
SeriousEE Jan 19, 2016 at 09:59:03 (UTC)
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.
Member: windelterrorist
windelterrorist Jan 19, 2016 at 10:31:44 (UTC)
Goto Top
Vielen herzlichen Dank!

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


Grüsse
windelterrorist