【问题标题】:How can PowerShell foreach possibly be failing with a null array in this code?PowerShell foreach 如何在此代码中因空数组而失败?
【发布时间】:2012-10-17 04:52:18
【问题描述】:

这个 powershell 代码怎么会因为“无法索引到空数组。”而失败?这对我来说毫无意义。确定 $cloudPfx 应该是一个非空数组吗?

$cloudPfx = @( "Foo.pfx", "Bar.pfx", $SSLCertFileName )
$cloudPfx | foreach {
    ## call some function...
    Save-Pfx "Foo\$_" (Join-Path $SomePath "Bar$_")
}

foreach : Cannot index into a null array.
At [that line]
+     $cloudPfx | foreach {
+                 ~~~~~~~~~
+ CategoryInfo          : InvalidOperation: (:) [ForEach-Object], RuntimeException
+ FullyQualifiedErrorId : NullArray,Microsoft.PowerShell.Commands.ForEachObjectCommand

【问题讨论】:

  • 不应该,即使$SSLCertFileName 为空。鉴于此,此代码必须比发布的内容更多。例如,$SSLCertFileName 中的内容是什么?
  • 而且,代码复制/粘贴是偶然的吗?是否有任何错误的特殊字符显示为空格?
  • 尝试使用 foreach 语句而不是 cmdlet。 IE。将您的代码更改为foreach($_ in $cloudPfx) {..}。它不会解决您的问题,但希望您会收到更好的错误消息。
  • 也用这一行代替原来的不正确:Save-Pfx "Foo\$_" (Join-Path $SomePath "Bar$_")

标签: arrays powershell foreach


【解决方案1】:

因此,通过添加调试输出语句 - 事实证明问题确实发生在 Save-Pfx 函数内部。只是错误表示是完全错误的。 (我认为 Roman 可能怀疑这一点,因为他建议切换到 foreach 语句。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-18
    • 1970-01-01
    • 2015-11-19
    • 2018-01-19
    • 2016-12-08
    • 2011-12-20
    • 1970-01-01
    相关资源
    最近更新 更多