我得到这个错误:IndexOutOfRange
Array assignment failed because index '3' was out of range. At Z:\CSP\deploys\aplicacional\teste.ps1:71 char:12 + $UNAME[ <<<< $i]= $line + CategoryInfo : InvalidOperation: (3:Int32) [], RuntimeException + FullyQualifiedErrorId : IndexOutOfRange
我实在找不出为什么指数结束。
$CSNAME = @(KPScript -c:GetEntryString $PASSHOME\$PASSFILE -pw:$PASS -Field:csname $SEARCH)
$UNAME = @()
$i = 0
Write-Host "Length="$CSNAME.Length
while($i -le $CSNAME.Length)
{
Write-Host "Start "$i
#$CSNAME[$i].GetType()
if ($CSNAME[0].StartsWith("OK:")) {
Write-Host "ACES $ACES does not exist" -Foreground "red"
}
if ($CSNAME[$i].StartsWith("OK:")) {
break
}
Write-Host "CSNAME="$CSNAME[$i]
$UNAME = $UNAME + $i
$UNAME = KPScript -c:GetEntryString $PASSHOME\$PASSFILE -pw:$PASS -Field:UserName -ref-csname:$CSNAME[$i]
foreach ($line in $UNAME) {
if (! ($line.StartsWith("OK:"))) {
Write-Host $i
$UNAME = $UNAME + $i
Write-Host "uname var"$i
$UNAME[$i] = $line
} else {
Write-Host "break"
break
}
}
#$UNAME[$i].GetType()
#if ($UNAME[$i].StartWith("OK:*")){
# break
#}
Write-Host "UNAME="$UNAME[$i]
#$UNAME[$i]
Write-Host "End "$i
$i += 1
Write-Host "switch"
}
既然第二个while是基于第一个数组长度,它有值,为什么它超出范围?
你能帮我理解KPScript的含义吗?这是一种外部命令吗?在PowerShell命令提示符下触发该命令时会得到什么样的输出? – SavindraSingh
您的代码有点令人困惑,但问题在于您使用的是从$ CSNAME.length派生的主索引'$ i'来索引一个完全不同的数组'$ UNAME',所以它们显然不会有相同的长度。我建议你解释这里发生的事情,并包括一些示例文本和预期输出。我相信我们可以为你解决这个问题。 – Matt
@SavindraSingh kpscript是用于访问keepass数据库的cmd工具。 – Matt