2012-10-17 90 views
1

这个PowerShell代码如何失败,'不能索引到一个空数组'。我根本没有意义。当然$ cloudPfx应该是一个非空数组?在这段代码中,PowerShell foreach可能会失败并返回null数组?

$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 
+0

即使'$ SSLCertFileName'为空,它也不应该。鉴于此,该代码必须多于发布的代码。例如,什么在'$ SSLCertFileName'中? – Sumo

+0

而且,是代码复制/粘贴偶然?有没有任何错误的特殊字符出现为空格? – Sumo

+1

尝试使用'foreach'语句而不是cmdlet。即将您的代码更改为'foreach($ _ in $ cloudPfx){..}'。它不会解决你的问题,但你会希望得到一个更好的错误信息。 –

回答

0

所以,加入调试输出语句 - 事实证明,问题是真正的保存,为Pfx函数内部产生。这只是错误表达完全错误。 (我认为罗马可能怀疑这一点,因为他建议转换为foreach语句。)

相关问题