我的脚本给出了错误"索引超出了数组的范围"电源外壳

时间:2016-02-17 20:17:18

标签: powershell

我正在编写脚本并且遇到了标题中描述的错误。我的代码如下。我甚至试过输出" $ i"它显示了预期的值,所以我不确定它为什么会给我错误。当它到达"写主机"线,它甚至不输出它。我错过了什么?

$LogName = @() #Declaration of an empty array

$NumberOfLogs = Read-Host -Prompt "How many logs do you want to retrieve?" 
for ($i=0
$i -lt $NumberOfLogs
$i++) 
{ 
$j = $i+1
$LogName[$i] = Read-Host -Prompt "Enter name of Log #$j"
Write-Host $LogName[$i]
}

显然还有另一篇关于此的帖子,但我尝试了列出的建议作为答案它仍然给了我同样的错误。

2 个答案:

答案 0 :(得分:2)

正确的答案是以大多数PowerShell网站上发布的不同方式初始化阵列。即使是dotnetom建议的帖子也没有将其作为主要答案,但作为对主要答案的评论。无论哪种方式,正确的方法如下:

$NumberOfLogs = Read-Host -Prompt "Enter the number of logs you want"
$LogName = New-Object string[] $NumberOfLogs

然后我的for循环的其余部分工作正常。

答案 1 :(得分:0)

PowerShell数组是固定大小的。由于它的创建长度为零,因此尝试向其添加任何内容都会导致错误。

当然有很多方法可以解决这个问题,但在这种情况下最简单的方法可能是使用更灵活的arraylist而不是数组:

$LogName = new-object system.collections.arraylist