2016-07-26 2 views
-1

Je suis en train d'écrire un script que je peux regarder une liste de serveurs distants, rechercher un certain type de fichier. Ensuite, si le fichier se compose d'une certaine chaîne, je veux savoir quel est le fichier et sur quel ordinateur.Get-content Pipe pour sélectionner la chaîne et récupérer ComputerName

J'ai commencé avec les bases, mais quand je fais Select-String je ne peux pas récupérer le fichier et je ne peux pas trouver le nom de l'ordinateur, il sort juste la même chaîne que j'ai dans mon script.

Je suis sûr que je manque quelque chose de basique mais toutes les suggestions ici seront grandement appréciées.

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

Je souhaite pouvoir sélectionner FileName, Pscomputername et Select-String.

Répondre

0

Je trouve plus facile de casser la canalisation. J'ai testé ce code avec succès:

$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

Merci, j'apprécie vraiment cela. Je suis relativement novice dans le domaine de l'énergie et j'apprends simplement en essayant de faire les choses dont j'ai besoin. J'ai commencé à faire quelque chose de similaire la nuit dernière mais je me suis retrouvé coincé avec le nom de fichier qui revenait à inputtream. – JonnyBoy