PowerShell脚本开发常见问题解答

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用于向用户告知脚本中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值