Обрезать специальные символы PowerShell

Я использую Get-ChildItem, чтобы находить файлы на удаленных компьютерах и отправляю их по трубопроводу с помощью Select-Object, чтобы вернуть только найденное имя файла. Проблема в том, что он возвращает @{Name=File.txt}, но мне нужно только имя файла.

$TraName = Get-ChildItem \\$comp\c$\ -Filter File*.txt | Select-Object Name
$TraName
echo "Found $TraName on $comp" | out-file c:\Names.txt -append

Я пытался использовать.Trim(@{Name=}), но он не будет обрезать специальные символы.

Любой совет?

1 ответ

Решение

Select-Object Property возвращает пользовательский объект PowerShell с одним свойством. Когда пользовательские объекты преобразуются в строки, хеш буквально (@{name=value;name=vale;…}) обозначение используется.

Если вы хотите выбрать только одно свойство, просто используйте .Property чтобы сделать это, PowerShell делает правильные вещи для массивов (вы получаете массив значений этого свойства):

$TraName = (Get-ChildItem \\$comp\c$\ -Filter File*.txt).Name
Другие вопросы по тегам