如何正確使用ErrorAction參數與我的高級功能?比如我有這樣的功能:如何處理PowerShell高級函數ErrorAction參數?
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"
}
讓我們假設源路徑$ SRC不存在。而且我在執行此功能與ErrorAction =停止:
test1 -ea stop
我想到的是,錯誤將被拋出,我會不看到「SomeText」的消息。但我得到了它:
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
我可以添加ErrorAction參數拷貝項目的test1的函數內部 cmdlet的,但我希望能夠明確地將其設置爲功能啓用/禁用錯誤操作行爲。
我該怎麼做才能使它工作?
無法重現此問題。哪個版本的PowerShell是這個?如果使用完整的參數名稱('test1 -ErrorAction Stop'),它有什麼區別? –
同樣,在PowerShell 5中不可重現。 –
我發現添加到** Copy-Item **中的w/o ** Verbose **參數可以正常工作(在出錯後立即停止)。但是** Verbose **參數不起作用。 PowerShell v.5 –