Цикл PowerShell foreach печатает слишком много: я хочу, чтобы он печатал только то, что хочу печатать - PullRequest
1 голос
/ 02 октября 2019

В PowerShell я хочу пройтись по объекту, в котором есть несколько элементов, но я хочу посмотреть только на два элемента, путь и имя, и поработать над ними. Проблема в том, что, если я использую foreach или ForEach-Object, он сразу же печатает $line.Name и $line.Path, когда я не хочу, чтобы они печатали.

Пробовал foreach и ForEach-Object, пробовал void и | Out-Null, пробовал $element.Name.ToString().

void и Out-Null в значительной степени стирает всю вещь, поэтому я не вижу никаких значений, и я все еще могу видеть пустымстроки, в которых были строки void или Out-Null.

ToString() все еще печатает значение.

foreach ($line in $buildPipelineObject) {
    # $line.* has leading and trailing spaces, want to trim them
    $trimPath = $line.Path  # don't print!
    $trimPath.Trim()
    $trimName = $line.Name.ToString()  # don't print!
    #[void]Set-Variable -Name "trimName" -Value $line.Name # makes trimName null 
    $trimName.Trim()

    # if pipeline isn't in a subfolder, then I don't need to insert backslash
    if ($trimPath -eq "\") {
        $pipelineName = $trimPath + $trimName
    } else {
        $pipelineName = $trimPath + "\" + $trimName
    }
    Write-Host "pipeline: $pipelineName"
}

Проблема в том, что я запускаю этот блок и вижу вещикак

\
pipelinename1
pipeline: \pipelinename1
\myfolder
pl2
pipeline: \myfolder\pl2

Я хочу видеть только строки "pipe:", например

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