Как избежать целочисленной регистрации с foreach в PowerShell? - PullRequest
0 голосов
/ 03 мая 2018

Я написал скрипт PowerShell, который выглядит следующим образом:

foreach ($li in  $list) {
    try {
        #check ID in the hashtable for new topics
        if ($TopicUpdates.ContainsKey($li["ID"].ToString())) {
            $li["Topics"] = $TopicUpdates[($li["ID"].ToString())]
            $li.SystemUpdate($false)
        } else {
            $li["Topics"] = 'About'
            $temp = "" | select "Title", "ID"
            $temp.Title= $li["Title"]
            $temp.ID= $li["ID"]

            if ($li.File.CheckOutStatus -eq "None") {
                $li.SystemUpdate($false)
            } else {
                $CheckedOutAlbums.Add($temp)
            }

            $NonExistingTopics.Add($temp)
        }
    } catch {
        $isError = $true
        $time = Get-Date
        $ErrorMessage = $_.Exception.Message
        "Error Occurred ($time) with error message: $ErrorMessage" |
            Out-File ".\error.log" -Append
    }
}

Я заметил, что во время работы скрипта он записывает целые числа в консоли:

1
2
3
etc.

Что может быть причиной этого? Я не написал Write-Host заявлений.

1 Ответ

0 голосов
/ 03 мая 2018

Эти

$CheckedOutAlbums.Add($temp) 
$NonExistingTopics.Add($temp)
$li.SystemUpdate($false)

Вероятно, вернуть значение. По умолчанию все «свободные» значения в скрипте powershell отправляются в конвейер и оказываются на экране (или перенаправляются в файл и т. Д.).

Измените их на одно из:

$null = $CheckedOutAlbums.Add($temp) 

[void]$CheckedOutAlbums.Add($temp) 

$CheckedOutAlbums.Add($temp) | out-null

для подавления возвращаемого значения, поступающего в выходной поток.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...