Получить PowerShell для отображения всех путей, где определенный диск может быть найден на диске - PullRequest
6 голосов
/ 18 апреля 2009

Я пытаюсь создать функцию, которая будет показывать мне все пути, в которых находится определенное имя файла. Функция будет принимать один параметр, который является именем файла. Результатом может быть либо список всех путей, либо сообщение о том, что в системе такого файла нет.

Я новичок в Powershell, и пока не получаю синтаксис. Я пробовал это:

Get-ChildItem -Path -Include notepad.exe

Но это бросило сообщение об ошибке. Я сейчас пытаюсь:

$i="notepad.exe"

Foreach ($i in Get-ChildItem c:\ -Recurse){echo -Path}

Начал, что сейчас, он все еще работает, не знаю, что произойдет, на самом деле.

РЕДАКТИРОВАТЬ: echo'd огромное количество строк, которые просто говорят "-Path" ...

Кто-нибудь может помочь с этой проблемой? Кстати, я использую Powershell 1.0.

Итак, чтобы объяснить, что я хочу видеть при выполнении этой команды, вот пример того, что я ожидаю после поиска * .txt:

C: /foo.txt
C: /A/foobar.txt
C: /A1/foo.txt

И так далее, перечисляя путь ко всем файлам .txt на моем жестком диске. Только пути, по одному на строку, дополнительная информация не требуется.

EDIT2:

Я сделал это. Я оставлю этот вопрос тем, кто ищет это в будущем.

Я использовал следующую функцию (этот конкретный пример предоставит вам список всех .zip-файлов на вашем жестком диске, отредактируйте, где необходимо):

Get-ChildItem -Path c:\ -Include "*.zip" -Recurse -Force -Name > c:\listOfPaths.txt

Это создало файл с именем listOfPaths.txt в моей папке C: \, и он содержал список всех вхождений любого файла, заканчивающегося .zip во всех подпапках моего жесткого диска.

Бит "c: \" не упоминается, но я не против.

EDIT3:

спасибо capar за более полную версию.

Вот код capar (или как я его получил, поскольку Get-Children не работает в 1.0)

Get-ChildItem -Path c:\ -Recurse *.txt | Select-Object -Property FullName

Ответы [ 3 ]

9 голосов
/ 18 апреля 2009

Поскольку сегодня пятница, я решил поиграть с Power Shell, чтобы посмотреть, смогу ли я помочь :) Я думаю, это очень близко к тому, о чем вы просите:

Get-ChildItem -Path c:\ -Recurse *.txt | Select-Object -Property FullName

Если это поможет, эта команда выведет список свойств любого объекта, который будет возвращен Get-ChildItem:

Get-ChildItem | Get-Member
1 голос
/ 31 августа 2013

Get-Children также не распознается в Powershell V3. Было бы здорово, если бы кто-то удалил этот плохой пример.

В качестве предупреждения для всех, кто ищет файлы: C: \ на современных жестких дисках займет много времени для запуска. Рекомендуем вам сузить область поиска настолько, насколько это возможно. Поскольку структура вашей папки может содержать пробелы или специальные символы, используйте разделитель кавычек (") или апостроф (') пишущей машинки.

$ mylistoffiles = Get-ChildItem -Path 'C: \ Windows \ Setup \ Scripts' -Recurse * .cmd | Select-Object -Property FullName

$ mylistoffiles

1 голос
/ 18 апреля 2009

ls c: \ -r | ? {$ _. name -eq "notepad.exe"}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...