2016-07-26 18 views
-1

Ich versuche, ein Skript zu schreiben, das ich auf einer Liste von Remote-Servern suchen kann, nach bestimmten Dateitypen suchen. Wenn die Datei aus einer bestimmten Zeichenfolge besteht, möchte ich wissen, welche Datei auf welchem ​​Computer vorhanden ist.Get-Inhalt Pipe, um Zeichenfolge auszuwählen und ComputerName abzurufen

Ich begann mit den Grundlagen, aber wenn ich Select-String, kann ich die Datei nicht abrufen, noch kann ich den Computernamen finden, es gibt nur die gleiche Zeichenfolge wie ich in meinem Skript.

Ich bin sicher, dass ich etwas Grundlegendes vermisse, aber alle Vorschläge hier werden sehr geschätzt.

$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 } 

Ich möchte in der Lage sein, Dateinamen zu wählen, PsComputerName und Select-String.

Antwort

0

Ich finde es einfacher, die Pipeline zu brechen. Ich habe diesen Code erfolgreich getestet:

$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 
} 
+1

Danke, das schätze ich wirklich. Ich bin ziemlich neu in Power Shell und lerne nur, indem ich versuche Dinge zu tun, die ich erledigen muss. Ich habe letzte Nacht etwas Ähnliches gemacht, bin aber mit dem Dateinamen zurück geblieben, den er immer wieder bei Inputstream gefunden hat. – JonnyBoy