如何在PowerShell中创建数组?

iTa*_*ayb 27 arrays powershell

我想在PowerShell中创建一个数组数组.

$x = @(
    @(1,2,3),
    @(4,5,6)
)
Run Code Online (Sandbox Code Playgroud)

它工作正常.但是,有时我在数组列表中只有一个数组.在这种情况下,PowerShell会忽略其中一个列表:

$x = @(
    @(1,2,3)
)

$x[0][0] # Should return 1
Unable to index into an object of type System.Int32.
At line:1 char:7
+ $a[0][ <<<< 0]
    + CategoryInfo          : InvalidOperation: (0:Int32) [], RuntimeException
    + FullyQualifiedErrorId : CannotIndex
Run Code Online (Sandbox Code Playgroud)

如何创建一个数组数组,保证它仍然是一个二维数组,即使数组中只有一个数组项?

CB.*_*CB. 46

添加逗号力以创建数组:

$x = @(
    ,@(1,2,3)
)
Run Code Online (Sandbox Code Playgroud)

简单方法:

$x = ,(1,2,3)
Run Code Online (Sandbox Code Playgroud)

  • 一篇关于魔术的好文章:http://blogs.msdn.com/b/powershell/archive/2007/01/23/array-literals-in-powershell.aspx.逗号运算符是PowerShell中的数组构造运算符 (9认同)
  • 当然,那么为了语法的一致性,你会希望这个`@(,@(1,2,3),@(4,5,6))`能够工作......但它不会给你什么你期待.叹. (4认同)
  • 语言中的这些类型的“便利”只是自找麻烦。 (4认同)
  • 神奇的逗号再次来袭!为什么powershell不会在没有逗号的情况下创建数组? (3认同)
  • 微软打破了上面评论中的链接。新位置是 https://blogs.msdn.microsoft.com/powershell/2007/01/23/array-literals-in-powershell/ (2认同)