如何处理powershell高级函数ErrorAction参数?

时间:2016-08-04 09:17:19

标签: powershell error-handling

如何在高级功能中正确使用 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 = Stop

执行此功能
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 函数中的 Copy-Item cmdlet,但我希望能够明确地将其设置为启用/禁用错误操作行为的功能

我该怎么做才能让它发挥作用?

2 个答案:

答案 0 :(得分:1)

您需要使用MATCH (bal:BalanceSheetItemBalance), (val:ValueBasisLayerBalance) WHERE bal.BalanceSheetItemID = val.BalanceSheetItemID CREATE (bal)-[:LAYERS]->(val) 并检查$PSBoundParameters

$ErrorActionPreference

答案 1 :(得分:0)

我建议您为输入参数放置验证事件,如下所示:

param([ValidateScript({Test-Path $_})][string]$path = "c:\temp")