Канал Get-Content для выбора строки и получения имени компьютера

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

Я начал с основ, но когда я делаю Select-String, я не могу получить файл и не могу найти имя компьютера, он просто выводит ту же строку, что и я в моем скрипте.

Я уверен, что упускаю что-то простое, но любые предложения здесь будут высоко оценены.

$servers = ArrayofServers

    ForEach ($server in $Servers){ 
                invoke-command -computername $server {Get-ChildItem "D:\Folder\Location\Windows\" -Include *.txt -Recurse |

                Get-Content | 

                Select-String 'String to Select' | 

                Out-String 

    } -Credential $credential }

Я хочу иметь возможность выбрать FileName,Pscomputername и Select-String.

1 ответ

Решение

Мне легче сломать трубопровод. Я успешно проверил этот код:

$Servers = @("ArrayofServers")
foreach ($Server in $Servers)
{ 
    Invoke-Command -ComputerName $Server -ScriptBlock {
        $Results = $false
        $SearchResults = Get-ChildItem "D:\Folder\Location\Windows\" -Include *.txt -Recurse 
        foreach ($SearchResult in $SearchResults)
        {
            If ($SearchResult | Get-Content | Select-String 'String to Select')
            {
                $SearchResult.FullName
                $SearchResult | Get-Content
                $Results = $true
            }
        }
        If ($Results)
        {
            $env:COMPUTERNAME
        }
    } -Credential $Credential 
}
Другие вопросы по тегам