在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.有区别吗?
我有一个 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,但是有没有办法使用Parameter和ParameterSet属性来做到这一点?
简而言之,这就是我正在尝试做的事情: