none
Powershell Datei kopieren mit ACL Script funktioniert nicht. RRS feed

  • 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

    Mittwoch, 6. Juli 2016 13:22

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
    Donnerstag, 7. Juli 2016 07:30

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

    Mittwoch, 6. Juli 2016 14:48
  • 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

    Donnerstag, 7. Juli 2016 06:10
  • 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
    Donnerstag, 7. Juli 2016 07:30
  • Danke Birma 

    Ich habe es mit der Eingabe Überprüfung ausprobiert und es funktioniert. Jetzt probiere ich noch die Parameter Version aus.

    mfg 

    xpxy

    Donnerstag, 7. Juli 2016 08:22