除非存在断点,否则Powershell函数不在object中工作

时间:2018-02-06 22:02:53

标签: function powershell object

这是我在这个网站上的第一个问题,所以我对我错过的任何礼仪表示歉意。 我的环境如下: 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)  
    }

但我的兴趣完全是基于挫折:当我无法想象这样的东西时,我讨厌它。 到目前为止,我的理论最终出现了:

  • a.Microsoft bug,导致所有失败,归咎于微软
  • 湾它与一个与一个对象不同的函数的输出有关,因此我不能用它来做任何事情,并且错误在某种程度上不是由Powershell本身咳嗽。
  • ℃。正在努力......

    我希望有人能够更好地了解为什么会这样。提前感谢阅读所有这些

0 个答案:

没有答案