2016-07-26 31 views
-1

我想寫一個腳本,我可以查看遠程服務器的列表,搜索某些文件類型。然後,如果文件包含一個特定的字符串,我想知道哪個文件在哪個計算機上。Get-content管道選擇字符串並檢索ComputerName

我從基礎開始,但是當我做選擇字符串時,我無法檢索文件,也找不到計算機名稱,它只是輸出與我在腳本中相同的字符串。

我敢肯定我失去了一些基本的東西,但任何建議在這裏將不勝感激。

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

我希望能夠選擇文件名,Pscomputername和選擇字符串。

回答

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