对服务器列表使用Select-String

时间:2013-06-11 19:33:49

标签: powershell

我有一个服务器列表,其中包含一行中的所有服务器名称。每个服务器都具有以下所列的确切路径和文件:

$Computers = get-content "c:\temp\serverlist.txt"

foreach ($Computer in $Computers) {
  select-string "F:\xxx\SmarXXXX\yyyyyyations\xxxxx\servers\data-sources.xml" `
    -pattern "thisiswhatimsearchingfor"
}

我用xxxxx编辑了实际代码,因为其中一些可能被认为是敏感的。当我运行此命令时,我获得了我正在寻找的字符串,但是没有指向哪个服务器返回此数据的链接。我基本上需要找出我的服务器列表中的哪些服务器不包含所请求的模式。

任何想法都将不胜感激。谢谢你的耐心等待。

编辑: 我提出了以下内容,但它没有显示所需的输出。这只返回字符串,但不返回它从中提取的服务器。谢谢您的帮助。我尝试添加where-object,以便查看每个字符串的关联服务器。这失败了。

$Computers = get-content "c:\temp\serverlist.txt"

foreach ($Computer in $Computers) {
 Select-String "F:\xx\xxxxxxPath\applications\yyyyyyy\servers\data-xxxx.xml" -pattern "render" | where {($_ -match "render") 
}
}

2 个答案:

答案 0 :(得分:1)

这可能会这样做:

Get-Content c:\temp\serverlist.txt | where { 
  -not ( $_ -match "thisiswhatimsearchingfor" ) 
}

答案 1 :(得分:1)

使用UNC路径和过滤器获取文件中出现搜索模式的计算机列表:

$file = 'F$\xxx\SmarXXXX\yyyyyyations\xxxxx\servers\data-sources.xml'

Get-Content "c:\temp\serverlist.txt" | ? {
  (Get-Content "\\$_\$file") -match 'search pattern'
}