繁体   English   中英

我的脚本给出错误“索引在数组的边界之外” Powershell

[英]My script is giving the error “Index was outside bounds of array” Powershell

我正在编写脚本,并且遇到标题中描述的错误。 我的代码如下。 我什至尝试输出“ $ i”,它显示了预期的值,所以我不确定为什么它会给我错误。 当到达“ Write-Host”行时,它甚至不会输出。 我想念什么?

$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]
}

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

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

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

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

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

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

$LogName = new-object system.collections.arraylist

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM