相关疑难解决方法(0)

我什么时候应该使用Write-Error vs. Throw?终止与非终止错误

在PoshCode上查看Get-WebFile脚本,http: //poshcode.org/3226 ,我注意到这个奇怪的对我来说:

$URL_Format_Error = [string]"..."
Write-Error $URL_Format_Error
return
Run Code Online (Sandbox Code Playgroud)

与以下相反,这是什么原因?

$URL_Format_Error = [string]"..."
Throw $URL_Format_Error
Run Code Online (Sandbox Code Playgroud)

甚至更好:

$URL_Format_Error = New-Object System.FormatException "..."
Throw $URL_Format_Error
Run Code Online (Sandbox Code Playgroud)

据我所知,你应该使用Write-Error来解决非终止错误,并使用Throw来终止错误,所以在我看来你不应该使用Write-Error然后使用Return.有区别吗?

error-handling powershell powershell-2.0

134
推荐指数
5
解决办法
14万
查看次数

如何强制指定一组参数中的至少一个参数?

我有一个 PowerShell 函数,它需要一个字符串和三个开关。所以调用会是这样的:

My-Function "some string" -Switch1 -Switch2 -Switch3
Run Code Online (Sandbox Code Playgroud)

但是,我想让此函数仅在提供了字符串和至少一个开关的情况下运行。所以:

My-Function "some string" -Switch1 -Switch3  # Valid
My-Function "some string" -Switch2           # Valid
My-Function "some string"                    # Invalid
Run Code Online (Sandbox Code Playgroud)

我知道我可以通过检查是否已使用对象传递开关来实现这一点$MyInvocation,但是有没有办法使用ParameterParameterSet属性来做到这一点?

简而言之,这就是我正在尝试做的事情:

  • 每次调用该函数时都必须提供该字符串。
  • 每次调用该函数时都必须至少提供一个开关。

powershell

5
推荐指数
1
解决办法
4158
查看次数