2016-07-26 4 views
-1

リモートサーバーのリストを参照して特定のファイルタイプを検索できるスクリプトを作成しようとしています。ファイルが特定の文字列で構成されている場合、どのファイルがどのコンピュータ上にあるのかを知りたい。Get-contentパイプで文字列を選択し、ComputerNameを取得する

私は基本から始めましたが、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を選択できます。

答えて

0

パイプラインを壊す方が簡単です。このコードを正常にテストしました:

$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

ありがとう、本当にありがとうございます。私は力のシェルにはかなり新しく、ちょうどやりたいことをしようとすることで学びます。私は昨晩同様のことをやり始めましたが、入力ストリームに戻ってきたファイル名に悩まされました。 – JonnyBoy

関連する問題