Benutzer mit den meisten Antworten
Powershell Datei kopieren mit ACL Script funktioniert nicht.

Frage
-
Hallo Zusammen
Ich habe einen Skript geschrieben um Einen Datei zu kopieren mit ACL. Davor sollte er noch testen ob der Pfad vorhanden ist, wenn nicht Fehlerausgabe und das Skript sollte sich auch nicht beenden, wenn der Pfad nicht vorhanden ist. Was habe ich falsch gemacht? Könnt Ihr mir bitte helfen.
Cls $copypfad= Read-Host "Bitte geben Sie der zu kopierende Pfad ein " $pastepfad= Read-Host "Geben Sie den Ziel Pfad ein" $test1 = test-path -path $copypfad $test2 = test-path -path $pastepfad if($test1 -like "False"){ Write-Host "Bitte geben Sie ein gültiges Pfad ein! " return } if($test2 -like "False"){ Write-Host "Bitte geben Sie ein gültiges Pfad ein! " return } Copy-item -path $copypfad -Destination $pastepfad $ACL=Get-Acl $copypfad #Holt Die ACL von alten Ordner Set-Acl -path $pastepfad -AclObject $ACL #Kopiert es in den neuen Pfad
Danke im Vorraus
XPXY
Antworten
-
Hallo,
also Eingaben kannst Du z.B.: so pruefen.
$copypfad= Read-Host "Bitte geben Sie der zu kopierende Pfad ein " While (-Not (Test-PAth $copypfad)) { Write-Warning "$copypfad ist kein gültiger Pfad!" $copypfad= Read-Host "Bitte geben Sie der zu kopierende Pfad ein " }
Jetzt kann man diskutieren ob es Sinn macht ob das Script nach Eingaben fragt, oder ob man dem Script diese besser ueber Parameter ueberittelt und diese auch dem Scriptteil prueft, so wie es auch ein PowerShell CMDLet macht. Das wuerde dann z.B.: so aussehen.
param ( [Parameter(Mandatory=$true)] [ValidateScript({Test-Path $_})] [String]$Source, [Parameter(Mandatory=$true)] [ValidateScript({Test-Path $_})] [String]$Destination ) $Source $Destination
Beste Gruesse
brima- Als Antwort markiert Xpxy Donnerstag, 7. Juli 2016 08:22
Alle Antworten
-
Hallo,
durch das Return bei den beiden IF's beendest du dein Script bei Fehleingabe, die beiden Return muessen also weg
Und du musst einfach die beiden Eingaben und deren Pruefung in eine Schleife packen und solange laufen lassen bis beide Werte OK sind. EV auch noch auf einen Abbruchwert pruefen
Ich koennte zwar jetzt auch eine Lösung posten aber es sieht für mich so aus also ob du am lernen bist und man sagt ja probieren geht ueber studieren.
Beste Gruesse
brima -
Danke Brima
Ja voll bin in der Schule Powershell objektorientiertes Programmieren am lernen.
Ich habe die Überprüfung mit einer Do While Schleife geschrieben. Dies funktioniert jetzt auch. Aber laut meiner Aufgabenstellung brauche ich eine Fehlerausgabe. Ich habe bei einer anderen Skript, welches ich auf für die Schule geschrieben habe, einen Fehlerausgabe eingefügt und es Funktioniert auch. Also habe ich es kopiert aber es funktioniert bei diesen Skript nicht.
Kannst du mir ein Tipp geben. So keine Lösung
mfg
xpxy
-
Hallo,
also Eingaben kannst Du z.B.: so pruefen.
$copypfad= Read-Host "Bitte geben Sie der zu kopierende Pfad ein " While (-Not (Test-PAth $copypfad)) { Write-Warning "$copypfad ist kein gültiger Pfad!" $copypfad= Read-Host "Bitte geben Sie der zu kopierende Pfad ein " }
Jetzt kann man diskutieren ob es Sinn macht ob das Script nach Eingaben fragt, oder ob man dem Script diese besser ueber Parameter ueberittelt und diese auch dem Scriptteil prueft, so wie es auch ein PowerShell CMDLet macht. Das wuerde dann z.B.: so aussehen.
param ( [Parameter(Mandatory=$true)] [ValidateScript({Test-Path $_})] [String]$Source, [Parameter(Mandatory=$true)] [ValidateScript({Test-Path $_})] [String]$Destination ) $Source $Destination
Beste Gruesse
brima- Als Antwort markiert Xpxy Donnerstag, 7. Juli 2016 08:22