powershell - 默认情况下强制所有函数的参数

标签 powershell

TIL 所有函数的参数默认都是可选的。

function f([int] $x) {
    if (!$x) { 
        echo "Why so null?" 
    }
}

f

等等!被遗忘的 $x争论就变成了$null
> .\script.ps1
Why so null?

对于 $x为强制性,其声明需要更新为[parameter(Mandatory=$true)][int] $x ,如果有一个或两个以上的参数,这似乎不是一个合理的解决方案。将此行为作为默认行为会很好,否则包含大量函数的庞大代码库看起来有点冗长并且属性过度饱和。

乍一看,Set-StrictMode听起来像一个神奇的词,它应该默认强制所有函数的参数,但不幸的是它不会以这种方式运行。

使作用域内的所有函数参数成为强制性的最佳实践是什么?

最佳答案

最佳做法是将所有强制参数标记为强制参数。

对于 PowerShell,必须明确指定所有必需参数,否则它们将被视为可选参数,此时不存在全部捕获。

您可以在 PowerShell 参数属性 here 上找到更多信息.

关于powershell - 默认情况下强制所有函数的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32187066/

相关文章:

amazon-web-services - 使用具有多个证书的 Invoke-WebRequest 在 PowerShell 中重写 CURL

powershell - 如何使用 PowerShell 复制 Azure 存储中的 blob,无需覆盖且无需确认每个文件?

c# - New-MailContact 的等效 API

powershell - 如何使用 powershell 删除所有 Azure 资源

Powershell命令: rm -rf

c# - 将 httpwebresponse 写入文件——powershell——简短而甜美(管道)

powershell - 我可以在 Azure 测试计划中自动化 pester 测试吗?

powershell - 表达几个常用的条件语句

powershell - 在远程计算机上运行 .ps1

PowerShell 窗口启动然后立即关闭