为什么此 Powershell 脚本会提取意外文件以进行 ipv4 搜索?

Why is this Powershell Script pulling unexpected files for ipv4 search?

我构建了一个强大的 shell 脚本来查找包含 ipv4 地址的配置文件。但是,该脚本返回的文件没有 IP 地址。以下脚本返回以下文件信息:

返回文件之一:"C:\SoftwareDevelopment\SourceCode\subversion\branches\SACB_Sprint1\packages\EntityFramework.6.1.0\content\App.config.transform"

以下是该文件的内容:

<configuration>
    <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    </configSections>
</configuration>

下面是 PowerShell 脚本:

$Path = "C:\SoftwareDevelopment\SourceCode\subversion\branches\"
$Text = "\b((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b"
$PathArray = @()
$Results = "C:\temp\IPV4SearchResults.txt"

Get-ChildItem $Path -Filter "*.config*" -recurse > $Results
Where-Object { $_.Attributes -ne "Directory"} | 
  ForEach-Object { 
     If (Get-Content $_.FullName | Select-String -Pattern $Text) {
        $PathArray += $_.FullName
        $PathArray += $_.FullName
     }
  }

我稍微修改了你的脚本。我用 2 个文件对其进行了测试,一个使用您发布的匹配文件中的示例代码,第二个使用相同的代码以及一个 IPv4 地址,并且只有一个 IPv4 地址匹配。

试一试:

$Path = "C:\SoftwareDevelopment\SourceCode\subversion\branches\"
$Text = "\b((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b"
$PathArray = @()
$Results = "C:\temp\IPV4SearchResults.txt"

$foundfiles = Get-ChildItem $Path -Filter "*.config*" -recurse | Where-Object { $_.Attributes -ne "Directory"} 

$foundfiles | % { 
     If (Get-Content $_.FullName | Select-String -Pattern $Text) {
        $PathArray += $_.FullName
     }
 }
$Patharray > $results