Я совсем новичок в powershell, и мне нужно помочь коллеге найти все файлы в папке, содержащей слово /Documents/ .

Выходные данные должны быть в текстовом файле, содержащем как путь, так и строку в этом файле.

Для начала мне удалось извлечь пути, используя следующий код. Но я не могу включить следующие строки:

$path = 'C:\Users\XXX'
$Text =”/Documents/"
$PathArray = @()

Get-ChildItem $path -Filter *.rdl -Recurse |
 ForEach-Object { 
 If (Get-Content $_.FullName | Select-String -Pattern $Text ){
            $PathArray += $_.FullName
            $PathArray += $_.FullName

           #write-Host "jhk"
         }
    $PathArray | % {$_} | Out-File "C:\Users\XX\tes2.txt"-Append
 }
 Write-Host "Contents of ArrayPath:"
$PathArray | ForEach-Object {$_}

Этот код работает, но, как уже было сказано, я не уверен, как добавить строки.

1 ответ1

0

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

Выполните поиск в Microsoft Virtual Academy на PowerShell и YouTube, чтобы получить бесплатное видео-обучение.

Вот некоторые другие ресурсы и советы:

  • Бесплатные электронные книги доступны на этом сайте
  • Прочитайте полный файл справки для любого командлета, который вы пытаетесь использовать
  • Практика с примерами
  • Прочитайте файл справки еще раз
  • Подберите несколько хороших книг, например, «PowerShell за месяц обедов».
  • На веб-сайтах Microsoft и многих других есть много бесплатных электронных книг PowerShell.

Смотрите также: Руководство по выживанию PowerShell

Что касается конкретного примера по вашему вопросу. Как насчет этого подхода?

$searchWords = 'Hello','Client'

Foreach ($sw in $searchWords)
{
    Get-Childitem -Path "d:\temp" -Recurse -include "*.txt","*.csv" | 
    Select-String -Pattern "$sw" | 
    Select Path,LineNumber,@{n='SearchWord';e={$sw}}
}


# Partial Results

Path                                            LineNumber SearchWord
----                                            ---------- ----------
D:\temp\Duplicates\BeforeRename1\PsGet.txt             157 Hello     
D:\temp\Duplicates\BeforeRename1\PsGet.txt             161 Hello     
D:\temp\Duplicates\BeforeRename1\StringText.txt          1 Hello     
D:\temp\Duplicates\PoSH\PsGet.txt                      157 Hello     
D:\temp\Duplicates\PoSH\PsGet.txt                      161 Hello     
D:\temp\Duplicates\PoSH\StringText.txt                   1 Hello     
...    
D:\temp\Duplicates\BeforeRename1\PoSH-Get-Mo...        108 Client    
D:\temp\Duplicates\BeforeRename1\Powershell ...         12 Client    
D:\temp\Duplicates\BeforeRename1\Powershell ...         15 Client    
... 
D:\temp\Duplicates\BeforeRename1\WindowsFeat...         92 Client    
D:\temp\Duplicates\BeforeRename1\WindowsFeat...         94 Client    
D:\temp\Duplicates\BeforeRename1\WindowsFeat...        149 Client    
D:\temp\Duplicates\BeforeRename1\WindowsFeat...        157 Client    
D:\temp\Duplicates\BeforeRename1\WindowsFeat...        191 Client    
D:\temp\Duplicates\BeforeRename1\WindowsFeat...        239 Client    
D:\temp\Duplicates\BeforeRename1\WindowsFeat...        241 Client  

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .