@to_east

Использование пайплайнов в PowerShell?

Возможно ли передача параметра -Path оператору new-item посредством пайплайна?
Типа такого:
echo "hello" | new-item -ItemType directory
  • Вопрос задан
  • 27 просмотров
Пригласить эксперта
Ответы на вопрос 2
Да, например так
'C:\Path' | Foreach-Object {New-Item -Path $_ -ItemType Directory -Name 'DirName'}
Ответ написан
Комментировать
@MaxKozlov Куратор тега PowerShell
Антон Анонимов ответил по существу, а я напишу в общем. но на вашем примере
PS> Get-Help New-Item -Parameter Name

-Name <System.String[]>
....
    Принимать входные данные конвейера? True (ByPropertyName)

Вот пункт Принимать входные данные конвейера - ответ на ваш вопрос
Вот тут, например
PS> Get-Help Set-Location -Parameter Path
    Принимать входные данные конвейера? True (ByPropertyName, ByValue)

ByValue - значит принимает напрямую
Вы могли бы написать echo "hello" | Set-Location и попасть в папочку

А ByPropertyName означает, что вы можете получить это значение только из свойства входящего объекта. то есть, например, вот так
[PSCustomObject]@{ Name = 'hello' } | New-Item

А можно, например вот так
# попытка 1 как выше
mkdir d:\test1
cd d:\test1
'z','x','c' | ForEach-Object { New-Item -ItemType Directory -Name $_ }

# попытка 2, сдублируем те же папочки в другом месте
mkdir d:\test2
cd d:\test2
Get-ChildItem d:\test1 | New-Item -ItemType Directory


btw, для New-Item можно использовать как -Path, так и -Name
You can specify the name of the new item in the Name or Path parameter value, and you can specify the path of the new item in Name or Path value. Items names passed using the Name parameter are created relative to the value of the Path parameter.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы