Powershell - оператор ForEach - объединение результатов - PullRequest
2 голосов
/ 09 апреля 2020

Я надеюсь, что кто-нибудь здесь поможет мне в отношении сценариев PowerShell.

Я пытаюсь выяснить, есть ли способ вызвать все результаты оператора ForEach:

ForEach ($file in $test) {
        $filepath = $path+"\"+$file
        write-host $filepath
}

write-host $ filepath внутри оператора ForEach возвращает следующее:

c:\....\file1.txt
c:\....\file2.txt
c:\....\file3.txt
etc...

Я пытаюсь выяснить, могу ли я получить все эти результаты и поместить их в 1 строку, которую я могу использовать вне утверждения foreach. вроде как:

c:\....\file1.txt, c:\....\file2.txt, c:\....\file3.txt etc

прямо сейчас, если я использую write-host $ filepath вне оператора ForEach, это даст мне только последний результат, который получил $ filepath.

надеюсь, я имеет смысл.

спасибо заранее.

Ответы [ 3 ]

3 голосов
/ 09 апреля 2020

Нет ничего проще ...; -)

$FullPathList = ForEach ($file in $test) {
    Join-Path -Path $path -ChildPath $file
}
$FullPathList -join ','

Сначала вы создаете массив с полными путями, а затем соединяете их с помощью оператора -join. ; -)

1 голос
/ 09 апреля 2020

Другой вариант,

$path = $pwd.Path   # change as needed
$test = gci         # change as needed

@(ForEach ($file in $test) { 
    $path + "\" + $file 
}) -join ", "
0 голосов
/ 09 апреля 2020

Возможно, вы захотите взглянуть на свойство FullName Get-ChildItem.

Если вы сделаете (gci).FullName (или, возможно, gci | select FullName), вы сразу получите полный путь.

Так что если $test - это gci из C: \ some \ dir, то $test.FullName - это массив, который вы ищете.

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