Wie kann ich ErrorAction Parameter mit meiner erweiterten Funktion richtig verwenden? Zum Beispiel habe ich eine solche Funktion:Umgang mit Powershell Erweiterte Funktion ErrorAction Parameter?
function test1 {
[CmdletBinding()]
param([string]$path = "c:\temp")
$src = Join-Path $path "src"
$dest = Join-Path $path "dest"
Copy-Item -Path $src $dest -Recurse -Verbose
write "SomeText"
}
Ermöglicht den Quellpfad $ src übernimmt nicht vorhanden. Und ich diese Funktion mit -ErrorAction Ausführung = Stopp:
test1 -ea stop
Ich gehe davon aus, dass der Fehler ausgelöst wird, und ich werde nicht siehe „EINTEXT“ -Meldung. Aber ich habe es:
Copy-Item : Cannot find path 'C:\temp\src' because it does not exist.
At line:5 char:1
+ Copy-Item -Path $path\src $path\dest -Recurse -Verbose
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (C:\temp\src:String) [Copy-Item], ItemNotFoundException
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.CopyItemCommand
SomeText
I -ErrorAction Parameter Copy-Item Cmdlets in der test1 Funktion hinzufügen könnte, aber Ich möchte in der Lage sein, explizit auf die Funktion einstellen zu aktivieren/Deaktivieren Sie das Fehleraktionsverhalten.
Was soll ich tun, damit es funktioniert?
kann nicht, dieses Verhalten reproduzieren. Welche Version von PowerShell ist das? Macht es einen Unterschied, wenn Sie den vollständigen Parameternamen ('test1 -ErrorAction Stop') verwenden? –
Ebenso nicht reproduzierbar in PowerShell 5. –
Ich entdeckte, dass w/o ** Verbose ** -Parameter zu ** Copy-Item hinzugefügt ** es funktioniert gut (stoppt direkt nach dem Fehler). Aber mit ** Verbose ** Parameter funktioniert es nicht. PowerShell v.5 –