在Powershell中匹配运算符后重新获取路径属性

在Powershell中匹配运算符后重新获取路径属性,powershell,Powershell,所以,我已经为下面的代码工作了一段时间,我在这里得到了一些很大的帮助,我对此表示感谢。此代码将打开Word或文本文档,拉出特定模式,然后返回数字。现在,我遇到的唯一问题是,在使用match操作符之后,我无法找出如何返回实际的文件名和完整路径。我只剩下与范围相匹配的实际数字。任何帮助都将不胜感激 $SearchStandard = @('[0-9]{3}-[0-9]{2}-[0-9]{4}' ) $NOMATCH = @('235-[0-9]{2}-[0-9]{4}') $NOMATCH2 = @

所以,我已经为下面的代码工作了一段时间,我在这里得到了一些很大的帮助,我对此表示感谢。此代码将打开Word或文本文档,拉出特定模式,然后返回数字。现在,我遇到的唯一问题是,在使用match操作符之后,我无法找出如何返回实际的文件名和完整路径。我只剩下与范围相匹配的实际数字。任何帮助都将不胜感激

$SearchStandard = @('[0-9]{3}-[0-9]{2}-[0-9]{4}' )
$NOMATCH = @('235-[0-9]{2}-[0-9]{4}')
$NOMATCH2 = @('[0-9]{3}-[0-9]{3}-[0-9]{4}')
$Word = New-Object -ComObject Word.Application
$allword  = Get-childitem -recurse *.docx , *.txt 
$newobj = New-Object -com word.application
Foreach ($wd in $allword) {
    $docu = $newobj.Documents.Open($wd.fullname, $false, $true)
    $docu.Paragraphs | ForEach-Object {
        ForEach ($SearchText in $SearchStandard) {
            $_.Range.Text | Where-Object {($_ -match $SearchText) -and ($_-notmatch $NOMATCH) -and ($_-notmatch $NOMATCH2)} 
        }
    }
}

您可以使用计算属性引用
$wd.FullName

$_.Range.Text | Where-Object {
    ($_ -match$SearchText) -and 
    ($_-notmatch $NOMATCH) -and 
    ($_-notmatch $NOMATCH2)
} | Select-Object @{Label='Number';Expression={$_}},@{Label='Path';Expression={$wd.FullName}}

只是一个友好的暗示:如果你感谢你收到的巨大帮助,考虑接受过去解决了你的问题的答案,点击适当答案左边的复选标记,你应该首先做适当的缩进。由于您第一次匹配$SearchStandard,$NOMATCH2没有意义,因为它们的位置不同。@LotPings
-match
v
-notmatch
'153-54-8645'将满足所有三个条件,而'1503-54-8645'将匹配
$SearchText
,但也匹配
$NOMATCH2
,因此不应出现through@MathiasR.Jessen
$NOTMATCH2
在第一个连字符后有3个数字,这是我的提示。谢谢Mathias和LotPings。马蒂亚斯,事实上,我将开始点击复选标记。此外,是的,一行中可能有多个数字。