Search

Крайне простенькая функция для поиска объектов файловой системы… (по сути это просто оберточка для Get-ChildItem)

function Search ($mask, $path=$(gdr|%{$_.root}|?{$_ -like "*:\" -and $_ -ne "A:\"}), [switch]$Hidden){
	Dir $path -Recurse -Include $mask -Force:$Hidden -ErrorAction SilentlyContinue
}

Первый аргумент указывает маску (или маски) для поиска, второй — где искать (по умолчанию на всех жестких дисках, опять-же можно указать несколько мест), и третий — флаг -Hidden говорит что искать надо и в скрытых файлах.

Используем например так:

PS L:\PowerShell> search cmd.*


    Directory: Microsoft.PowerShell.Core\FileSystem::C:\Windows\System32\en-US


Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        04.10.2006     13:54     135168 cmd.exe.mui


    Directory: Microsoft.PowerShell.Core\FileSystem::C:\Windows\System32


Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        04.10.2006     10:46     320000 cmd.exe

Несколько масок:

PS L:\PowerShell> search calc.exe,cmd.exe


    Directory: Microsoft.PowerShell.Core\FileSystem::C:\Windows\System32


Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        04.10.2006     13:47     176128 calc.exe
-a---        04.10.2006     10:46     320000 cmd.exe

Несколько путей, и заодно отфильтруем только пути к файлам:

PS L:\PowerShell> search *.cs '~\Documents\Visual Studio 2005\Projects',d:\ | Format-Table fullname

FullName
--------
C:\Users\Xaegr\Documents\Visual Studio 2005\Projects\Main\Main\frmMain.cs
C:\Users\Xaegr\Documents\Visual Studio 2005\Projects\Main\Main\frmMain.Designer.cs
C:\Users\Xaegr\Documents\Visual Studio 2005\Projects\Main\Main\frmPopup.cs
C:\Users\Xaegr\Documents\Visual Studio 2005\Projects\Main\Main\frmPopup.Designer.cs
C:\Users\Xaegr\Documents\Visual Studio 2005\Projects\Main\Main\frmSnippets.cs
C:\Users\Xaegr\Documents\Visual Studio 2005\Projects\Main\Main\frmSnippets.Designer.cs
...

Или можно поискать в реестре (да и на любом из PSDrive'ов, полный список который можно увидеть с помощью Get-PSDrive):

PS L:\PowerShell> search runonce HKCU:\


   Hive: Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion

SKC  VC Name                           Property
---  -- ----                           --------
  0   0 RunOnce                        {}

PS: А если установить PowerShell Community Extensions то к списку PSDrive добавятся еще структура Active Directory и Feed:\ содержащий RSS подписки из общего хранилища Vista (его используют например IE и Outlook 2007). А еще, в процессе разработки, но уже доступен, провайдер SharePoint для PoSH…

PPS: Ничего из вышенаписанного шуткой не является🙂 Всё серьёзно, можете сами попробовать и проверить🙂

Опубликовано в PowerShell. Комментарии к записи Search отключены
%d такие блоггеры, как: