0

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

$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") 
}
}
4

2 回答 2

1

这可能会做到:

Get-Content c:\temp\serverlist.txt | where { 
  -not ( $_ -match "thisiswhatimsearchingfor" ) 
}
于 2013-06-11T19:38:53.647 回答
1

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

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

Get-Content "c:\temp\serverlist.txt" | ? {
  (Get-Content "\\$_\$file") -match 'search pattern'
}
于 2013-06-12T18:06:51.753 回答