【发布时间】:2015-10-11 04:06:20
【问题描述】:
我正在尝试构建一个函数,它将字符串数组拆分为 a) 带有 [x] 个字符串数组的哈希表 - 或 - b) x 个字符串数组
我现在拥有的如下:
Function Split-Array {
Param (
# Param1 help description
[Parameter(Mandatory=$true,
ValueFromPipelineByPropertyName=$true)]
[array]$arrToSplit,
# Param2 help description
[int]$SplitInTo = 8
)
$Round = 0
$hashSplitted = @{}
For ($i = 0 ; $i -le ($SplitInTo -1) ; $i++ ) {
New-Variable -Name "arrPartial$i" -Value @()
}
While (($Round * $SplitInTo) -le $arrToSplit.Count) {
For ($i = 0 ; $i -le ($SplitInTo - 1) ; $i++) {
$arrDynamicVariable = Get-Variable -name "arrPartial$i" -ValueOnly
$arrDynamicVariable += $arrToSplit[($Round * $SplitInTo) + $i]
Set-Variable -Name "arrPartial$i" -Value $arrDynamicVariable
}
$Round++
}
For ($i = 0 ; $i -le ($SplitInTo -1) ; $i++) {
$hashSplitted[$i] = Get-Variable -Name "arrPartial$i" -ValueOnly
}
$hashSplitted
}
似乎出错的地方是“获取变量”部分。 Powershell报错:
Get-Variable:找不到名为“arrPartial8”的变量。在 行:1 字符:1 + 获取变量-名称“arrPartial$i”-ValueOnly + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : ObjectNotFound: (arrPartial8:String) [Get-Variable], I temNotFoundException + FullyQualifiedErrorId : VariableNotFound,Microsoft.PowerShell.Commands.GetVari 能命令
奇怪的是,arrPartial 变量似乎是创建的,但它与例如声明的变量有点不同。 "$arra = @()",如下图:
PS Variable:\> dir
Name Value
---- -----
$ )
? True
^ $arra
args {}
arra {}
arrPartial0 {}
arrPartial1 {}
arrPartial2 {}
arrPartial3 {}
arrPartial4 {}
arrPartial5 {}
arrPartial6 {}
arrPartial7 {}
请注意,arrPartialx 数组的 {} 向左缩进。这是一个错误还是我在这里做错了什么?欢迎任何关于不同方法的想法。
【问题讨论】:
-
我复制并粘贴了这个并针对我自己的数组运行并且没有出现这样的错误。您是否尝试过新的控制台?
标签: arrays powershell hashtable associative-array