Часть конвейера Powerhell пропускается - PullRequest
0 голосов
/ 07 марта 2019

Часть инструкции конвейера пропускается каждую 2-ю итерацию, получение / установка явных переменных работает просто отлично. Что мне здесь не хватает?

Прокомментируйте / раскомментируйте разделы внизу скрипта, чтобы сравнить результаты в cfg.json.

param (
    [string]$JSONFname = "cfg.json",
    [string]$Iterations = 300
  )

Function GetCfgData {
    param (
      [string]$JSONFname = "cfg.json",
      [string]$Key = ""
    )
    if (-not (Test-Path $JSONFname)) {
      New-Item -Name $JSONFname > $null
      $JSONData = @{iteration = $Iterations}
      $JSONData | ConvertTo-Json -depth 100 | Out-File $JSONFname
    }
    Write-Host (Get-Content $JSONFname | ConvertFrom-Json).$Key
    return [string](Get-Content $JSONFname | ConvertFrom-Json).$Key
  }

  Function SetCfgData {
    param (
      [string]$JSONFname = "cfg.json",
      [string]$Key = "",
      [string]$Value = ""
    )
      $JSONData = Get-Content $JSONFname | ConvertFrom-Json
      $JSONData.$Key = $Value
      $JSONData | ConvertTo-Json -depth 100 | Out-File $JSONFname
  }

1..100 | foreach {
  # "skipped" case 1
  # GetCfgData -Key "iteration" | ForEach-Object { $val= [int]$_ - 1} | SetCfgData -Key "iteration" -Value $val

  # working case 2
  $iter = GetCfgData -Key "iteration" 
  SetCfgData -Key "iteration" -Value $([int]$iter -1)
}
...