Как осуществляется работа с пайплайнами в PowerShell?

Можно ли передать параметр -Path оператору new-item через пайплайн? Например, вот так: <br/> <code>echo "hello" | new-item -ItemType directory</code>
  • 27 ноября 2024 г. 10:23
Ответы на вопрос 2
В PowerShell пайплайны позволяют передавать объекты из одного cmdlet в другой. Однако не все cmdlet могут принимать входные данные непосредственно из пайплайна в ожидаемом формате. 

Оператор `New-Item` создает новый элемент (например, файл, директорию и т.д.), и для него параметры могут иметь разные входные типы. Параметр `-Path` ожидает указание пути для нового элемента, но сам оператор `New-Item` не принимает строки (например, "hello") через пайплайн.

В вашем примере, команда:

```powershell
echo "hello" | New-Item -ItemType Directory
```

не сработает так, как вы ожидаете, потому что `New-Item` не может получать путь из пайплайна. Вместо этого вы можете использовать `ForEach-Object`, чтобы передать строки в качестве параметра `-Path`:

```powershell
echo "C:\SomeDirectory" | ForEach-Object { New-Item -Path $_ -ItemType Directory }
```

Таким образом, `ForEach-Object` берет каждую строку, переданную через пайплайн, и создает новый элемент по указанному пути.
Да, например так 
'C:\Path' | Foreach-Object {New-Item -Path $_ -ItemType Directory -Name 'DirName'}
Похожие вопросы