Канал 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
}