Обрезать специальные символы 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