【问题标题】:PowerShell: Difference [array] vs [array[]]PowerShell:差异 [array] 与 [array[]]
【发布时间】:2019-09-22 19:48:58
【问题描述】:

我需要在调用的 PS 脚本中声明一个数组参数。来自调用者/源脚本的数组位于哈希表中:

$Array = @(1, 2, 3)
$myHashTable = @{myArr = $Array}

调用: Z:\called.ps1 $myHashTable

在'called.ps1'中,有什么区别

Param(
$myArr
)

,

Param(
[array] $myArr
)

Param(
[array[]] $myArr
)

?

【问题讨论】:

  • 第一个将接受任何对象类型。第二个将接受大多数任何类型,但如果还没有,则将其转换为数组。第三个接受大多数类型 - 并将其转换为二维数组。

标签: arrays powershell hashtable


【解决方案1】:

您可以相当直接地进行测试。 [grin] 你的例子给...

  • 任何类型 = 保持该类型
  • 一维数组 = 如果还没有数组,则转换为数组
  • 二维数组 = 如果还没有,则转换为锯齿状数组(数组的数组)

演示代码...

function Test-Parameter
    {
    Param
        (
        $GenericVar,
        [array]$OneD_Array,
        [array[]]$TwoD_Array
        )

    $GenericVar.GetType()
    $OneD_Array.GetType()
    $TwoD_Array.GetType()
    }

Test-Parameter -GenericVar 'One' -OneD_Array 'Two' -TwoD_Array 'Three'

输出...

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     String                                   System.Object
True     True     Object[]                                 System.Array
True     True     Array[]                                  System.Array

【讨论】:

    猜你喜欢
    • 2014-11-28
    • 2011-07-12
    • 2016-09-12
    • 1970-01-01
    • 1970-01-01
    • 2019-12-03
    • 2014-08-24
    • 2016-01-08
    • 2019-06-29
    相关资源
    最近更新 更多