2015-06-18 2 views
1

Я получил следующую строку: PowershellВыберите FullName и дополнения контента в файл

$items = Get-ChildItem -Path "C:\temp" -Filter "*ä*" -Recurse | Select FullName 

Я хочу, чтобы написать эти пути в файл формата * .txt:

foreach ($item in $items){ 
    add-content -Path C:\temp\test.txt -Value $item -Force 
} 

Выход в тесте .txt:

@ {FullName = C: \ Temp \ ä}

Как я могу написать значение FullName в txt-файле? Например:

echo $item 

и вывод в консоли:

C: \ Temp \ ä

+1

'записи хоста $ item.FullName'? – Jeroen

+0

Не думал, что это будет так просто, thx! – SaintCore

ответ

3

Общая информация с PowerShell. $items - это не массив полных имен, а массив объектов с полным именем. (Array предполагая более, что один пункт был возвращен.)

$items = Get-ChildItem -Path "C:\temp" -Filter "*ä*" -Recurse | Select -Expand FullName 

или

# Requires PowerShell v3.0 or above 
$items = (Get-ChildItem -Path "C:\temp" -Filter "*ä*" -Recurse).Fullname 
+0

Оба примера работают нормально. Второй должен быть .FullName не. Fullname. Thx за вашу помощь! – SaintCore

+0

@Matt Второй синтаксис будет работать только в PS3 или выше, пожалуйста, сделайте заметку. Был вчера вопрос о том, почему этот синтаксис не работает, ответ был «слишком маленькая версия PS». – Vesper

+0

@SaintCore случай был бы косметической разницей и работал бы в любом случае, поскольку свойства не чувствительны к регистру. – Matt

0

Вы должны быть в состоянии сделать это:

foreach ($item in $items){ 
    add-content -Path C:\temp\test.txt -Value $item.FullName -Force 
} 

Вот общий способ найти этот бит информации:

Get-ChildItem | Get-Member 

Или же с сокращением от:

dir | gm 

Это список всех свойств, методов и т.д. для объектов, возвращаемых из Get-ChildItem.

+0

Как я уже сказал в своем комментарии выше, ваше решение работает на меня, но я думаю, что решение Matts является «более распространенным» из-за того, что он уже избавился от него во время фильтрации. – SaintCore