使用PowerShell,我想从文件中读取UNC路径

0h4hbjxa  于 2023-03-30  发布在  Shell
关注(0)|答案(1)|浏览(154)

我仍然是一个powershell新手,但感谢你,我正在学习...:-)
我有一个简单的文本文件,假设它的名字是“text.txt”。在这个文本文件中有一些单词(bla bla),后面跟着一个UNC路径,看起来有点像这样:

blah blah jaada jaada \\domain.ad.corp\data\dir1\dir1a\dir1ab\filename.txt blah blah jaada jaada

从这个简单的示例文本文件中,我想将UNC-Filename读取到一个变量中,假设变量的名称是$unc_content。
当powershell被要求给予变量$unc_content的内容时,答案应该是这样的:

$unc_content

\\domain.ad.corp\data\dir1\dir1a\dir1ab\filename.txt

如何才能做到这一点?许多许多thx为您的有益提示。

blmhpbnm

blmhpbnm1#

这段代码首先使用Get-Content读取“zxc.txt”的内容。然后定义一个匹配UNC路径的正则表达式,这似乎是您要查找的。最后,它使用Select-String查找正则表达式的所有匹配项,并使用. Matches. Value获取结果匹配项的值。
如果文件中只有一个UNC路径,则$unc_content将以字符串形式包含该路径。如果有多个UNC路径,则$unc_content将包含字符串数组。
请注意,如果文件不包含任何与所提供的正则表达式匹配的UNC路径,则$unc_content将为空或null。

$content = Get-Content -Path "zxc.txt" # Read the text file's content
    $unc_regex = '\\\\[\w\d.-]+\\([\w\d\s.-]+\\)*[\w\d\s-]+\.[\w\d]+'
    # This regex will match paths that start with \\ and end with a filename.extension, while allowing for spaces and various characters in the filename and directory names.
    
    $unc_content = ($content | Select-String -Pattern $unc_regex).Matches.Value
    Write-Host $unc_content

或者

$unc_content = Get-Content "zxc.txt" | Select-String '\\\\[\w\.\-]+\\[\w\-_\\.]+'
$unc_content = $unc_content.Matches.Value.Trim()
write-host $unc_content

Get-Content命令用于读取“text.txt”文本文件的内容。
Select-String被应用到获取的内容中,以查找所有与给定模式匹配的子字符串。在本例中,我们要查找的字符串以两个反斜杠(\)开头,后跟任意数量的字母、数字和其他域字符,然后是目录和文件名(也可能存在其他字符,但不是特殊的路径分隔符)。
$unc_content.Matches.Value.Trim()选择使用该模式找到的值,从它们构建对象集合,然后只选择每个对象的值,同时删除任何前导或尾随空格。
结果值保存在$unc_content变量中,您可以在此后的代码中使用此变量。调用$unc_content将返回找到的UNC路径(\domain.ad.corp\data\dir1\dir1a\dir1ab\filename.txt),不包含任何额外的空格或其他字符。

相关问题