PowerShell V4 - 将哈希表传递给函数

PowerShell V4 - Passing a hashtable to a function

我正在编写一个将哈希表作为参数之一的 PowerShell 函数。

我是不是在做一些不好的事情?其次,有没有更好的方法呢?

代码:

function removeItem
{
    Param(
        [Parameter(Mandatory=$True)]
        [string]$path,

        [string]$writetoText,
        $hashWrite = @{}
    )

}

简短回答:否

我看不出有任何理由使用 [hashtable] 或任何其他数据类型作为参数是不好的做法,至少在真空中是这样。如果您告诉我们您打算用它做什么,那么我们可能会告诉您实现目标的更好方法。

例子

如果您打算将许多相关参数传递给函数,但它们仅在某些其他参数存在或具有特定值时才适用,那么我认为在 PowerShell 中简单地使用 [hashtable]为此。

为什么?因为您可以使用 Parameter Sets and Dynamic Parameters 以语言支持的方式(通过自动生成帮助、制表符完成值等)来执行此操作,并处理您必须为其编写代码的大部分验证。