这是我在这个网站上的第一个问题,所以我对我错过的任何礼仪表示歉意。 我的环境如下: Powershell中的Powershell 5.1测试,包括PowerShell ISE
PSVersion 5.1.14409.1012
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.14409.1012
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
今天我遇到了一些我希望有人可以解释或重现的奇怪事物 我已经构建了一段基本上如下的脚本:
我有一个ps数组:
$ Json,$Json[6] = 69;44;67;27;72;31;68;27;64;27;46;27
var:$TempCount=1
好的方法:$TempList=@()
然后我有一个功能:
function TempCounter {
foreach ($TempExtract in ($Json[6] -split ';')) {
$tempcount += 1
if ([math]::Round($TempCount / 2) -eq ($TempCount / 2)) {
$TempList += $Tempextract
}
}
return $Templist
}
现在我想在下面使用此功能:
$Collection = @{
'Type' = "TextThing"
'Ranges' = ($json[3] -split ';' | Measure-Object -Minimum -Maximum -Average -sum)
'items' = ($json[3] -split ';')
'Temperature' = (TempCounter | Measure-Object -Minimum -Maximum)
}
但它不按我想要的方式工作。
$Collection.Temperature = 442731272727
(这些是彼此背后设置的偶数)并且在这一点上也是一致的,因此Measure-Object没有做任何事情。
它应该回馈:
$Collection.Temperature=
69
67
72
68
64
46
$Collection.Temperature.Minimum = 46
$Collection.Temperature.Maximum = 72
哪些是不均匀的数字,以及对象中的单独项目
然而,......这是奇怪的部分......
如果我在函数($ templist + = ... line)和F5上的Powershell ISE中调试它,它确实有效,直到我删除断点,然后再次运行它。
我在这里感觉到一点施罗德的猫。 为什么这不起作用?
要诚实,以前从未需要使用这样的函数,但由于Powershell是面向对象的,我认为使用它没有问题。 我真的不是在寻找一个解决方案,已经解决了这个问题:
foreach ($TempExtract in ($Json[6] -split ';')) {
$tempcount += 1
if ([math]::Round($TempCount / 2) -eq ($TempCount / 2)) {
$TempList += $Tempextract
}
}
$Collection = @{
'Type' = "TextThing"
'Ranges' = ($json[3] -split ';' | Measure-Object -Minimum -Maximum -Average -sum)
'items' = ($json[3] -split ';')
'Temperature' = ($TempList | Measure-Object -Minimum -Maximum)
}
但我的兴趣完全是基于挫折:当我无法想象这样的东西时,我讨厌它。 到目前为止,我的理论最终出现了:
℃。正在努力......
我希望有人能够更好地了解为什么会这样。提前感谢阅读所有这些