38、他们注意到有时会忘记输入骰子的数量,结果总和为0。我们怎样才能避免这种情况发生呢?
This is because there is no default value assigned for $Dice . We could assign it a default, but it might be better to make it a mandatory parameter by adding [Parameter(Mandatory)] like this:
param(
[ValidateSet(4,6,8,10,12,20)]
[int]$Sides = 20,
[Parameter(Mandatory)]
39、在用户不确定参数该填什么时,怎样才能让他们更轻松地使用相关程序?
可以为强制参数提供帮助消息,这样能让用户更清楚参数的填写要求,从而更轻松地运行脚本。
40、为什么我们在使用点源(dot sourcing)时要非常小心?
当我们使用点源脚本时,会将该脚本的成员、变量和函数引入到父作用域。作用域的概念是为了保护我们免受编写不明确的代码的影响,但通过点源代码,我们移除了这种保护。
例如,当交互式地点源 Write-Message.ps1 时,会将一个函数引入全局作用域,且之后很难移除。脚本中函数外部的任何变量也会被引入,如果这些变量命名不当,可能会与现有的重要变量冲突,导致不良后果。
41、代码“Function get-square($a) {$a*$a} 15 | get-square”存在什么错误?
在这段代码中,定义了一个名为 get-square 的函数用于计算输入值的平方。但直接使用 15 | get-square 是错误的,因为该函数没有定义如何从管道接收输入。要让它能从管道接收输入,需要在函数中添加对 ValueFromPipeline 参数属性的支持,例如:
Function get-square {
param(
[Parameter(ValueFromPipeline = $true)]
$a
)
{
$a*$a
}
}
这样修改后, 15 | get-square 就能正常工作了。
42、如何编写一个函数来获得准确的平方根?函数 get-root($a) {<这里应该写什么?>}
可以使用 PowerShell 中的 [Math]::Sqrt() 方法来计算准确的平方根,所以函数可以写成:
Function get-root($a) {
[Math]::Sqrt($a)
}
43、在运行脚本时,终止性错误和非终止性错误的主要区别是什么?
终止性错误会使 PowerShell 完全停止,导致脚本或管道停止运行。例如使用拼写错误的 cmdlet(如使用不存在的 Get - ChildItems ),PowerShell 在首次尝试运行该 cmdlet 时就会停止。
非终止性错误不会使管道完全终止,如果是在管道中处理多个文件名,非终止性错误会针对每个文件名出现一次错误信息。
在运行脚本时,为了方便设置异常处理程序(如将错误记录到文件),通常希望将非终止性错误转换为终止性错误,并将所有错误转换为异常。
44、我们如何访问有关错误的详细信息?
We can set the $ErrorView variable to NormalView by typing:
$ErrorView = "NormalView"
To see the entire error object that was generated, type:
Get-Error
Get-Error is a PowerShell 7 cmdlet that allows us to access detailed information about errors.
45、PowerShell中Write - Error cmdlet的用途是什么?
Write - Error cmdlet用于向用户告知脚本中

最低0.47元/天 解锁文章
244

被折叠的 条评论
为什么被折叠?



