【发布时间】:2016-11-30 16:16:00
【问题描述】:
在 Powershell 中,我有一个包含与此类似的数据的哈希表 -
Name Value
---- -----
1-update.bat 1
2-update.bat 2
3-update.bat 3
3.1-update.bat 3.1
4-update.bat 4
我还有一个包含数字的变量,例如3
我想做的是遍历数组并删除值小于或等于3的任何条目
我认为这很容易,尤其是the docs 说有表包含.remove 方法。但是,我下面的代码失败了,产生了这个错误-
使用“1”个参数调用“Remove”的异常:“Collection was of a 固定大小。”
这是我使用的代码 -
$versions = @{}
$updateFiles | ForEach-Object {
$versions.Add($_.name, [decimal]($_.name -split '-')[0])
}
[decimal]$lastUpdate = Get-Content $directory\$updatesFile
$versions | ForEach-Object {
if ( $_.Value -le $lastUpdate ) {
$versions.Remove($version.Name)
}
}
我首先尝试以不同的方式循环$versions,尝试了foreach 和for 两种方法,但都以相同的方式失败。
我还尝试创建一个临时数组来保存要删除的版本的名称,然后循环该数组以删除它们,但这也失败了。
接下来我点击谷歌,虽然我可以找到几个类似的问题,但没有一个能回答我的具体问题。大多数情况下,他们建议使用列表 (New-Object System.Collections.Generic.List[System.Object]),据我所知,这对我没有帮助。
有人能提出解决办法吗?
【问题讨论】:
-
那是你的实际代码吗?
$version是从哪里来的$version.Name子句?
标签: powershell hashtable