如何定义一种格式以通过 PowerShell 从文本文件中查找 UNC 路径?
How to define a format to find UNC path form a text file through PowerShell?
我只想从文本文件中获取 UNC 路径。 UNC 路径总是以字符和数字结尾,如 P100
、R101
、E000
等
有时 UNC 路径以某些字符或符号结尾,例如
\Localhost\apps\data\logs\P100###
我尝试了不同的方法来获取以 \
开头并以 P100 0R R101 等结尾的字符串。但是,无法通过 PowerShell 完成此任务。请帮忙。
如果UNC路径是\Localhost\apps\data\logs\P100###
或\Localhost\apps\data\logs\P100Target
,那么我只需要\Localhost\apps\data\logs\P100
通过我的脚本。必须删除任何多余的字符或符号。
使用-replace
操作:
# Sample paths
$paths =
'\Localhost\apps\data\logs\Q102###',
'\App.Abc.test.test\apps\GS\Data\PKG-SCCM\GoogleChrome_19.012.20034_MUI_E100###',
'\App.Abc.test.test\apps\GS\Data\PKG-SCCM\Flashplayer_19.012.20034_MUI_R101[Target]'
$paths -replace '(?<=\[^\]*[A-Z]\d{3})[^\]+$'
注意:使用-creplace
而不是-replace
来匹配大小写-敏感,这样只有大写(英文)字母匹配。默认情况下,PowerShell 通常不区分大小写。
要将以上内容应用于 file 输入(文件中的各个行),请使用类似
(Get-Content file.txt) -replace '...'
以上结果(请注意,输入字符串中 Q102
、E100
和 R101
之后的内容已被删除):
\Localhost\apps\data\logs\Q102
\App.Abc.test.test\apps\GS\Data\PKG-SCCM\GoogleChrome_19.012.20034_MUI_E100
\App.Abc.test.test\apps\GS\Data\PKG-SCCM\Flashplayer_19.012.20034_MUI_R101
-replace
操作仅考虑输入路径的 last 组件,因此适用于任何路径,只要最后一个组件前面有 \
.
对regex passed to -replace
and the ability to experiment with it, see this regex101.com page的解释。
如果您有每个文本文件的路径,您可以使用 Split-Path。
Split-Path -Path "\UNC\Folder\Folder\P100\Example.txt" -Parent
我只想从文本文件中获取 UNC 路径。 UNC 路径总是以字符和数字结尾,如 P100
、R101
、E000
等
有时 UNC 路径以某些字符或符号结尾,例如
\Localhost\apps\data\logs\P100###
我尝试了不同的方法来获取以 \
开头并以 P100 0R R101 等结尾的字符串。但是,无法通过 PowerShell 完成此任务。请帮忙。
如果UNC路径是\Localhost\apps\data\logs\P100###
或\Localhost\apps\data\logs\P100Target
,那么我只需要\Localhost\apps\data\logs\P100
通过我的脚本。必须删除任何多余的字符或符号。
使用-replace
操作:
# Sample paths
$paths =
'\Localhost\apps\data\logs\Q102###',
'\App.Abc.test.test\apps\GS\Data\PKG-SCCM\GoogleChrome_19.012.20034_MUI_E100###',
'\App.Abc.test.test\apps\GS\Data\PKG-SCCM\Flashplayer_19.012.20034_MUI_R101[Target]'
$paths -replace '(?<=\[^\]*[A-Z]\d{3})[^\]+$'
注意:使用-creplace
而不是-replace
来匹配大小写-敏感,这样只有大写(英文)字母匹配。默认情况下,PowerShell 通常不区分大小写。
要将以上内容应用于 file 输入(文件中的各个行),请使用类似
(Get-Content file.txt) -replace '...'
以上结果(请注意,输入字符串中 Q102
、E100
和 R101
之后的内容已被删除):
\Localhost\apps\data\logs\Q102
\App.Abc.test.test\apps\GS\Data\PKG-SCCM\GoogleChrome_19.012.20034_MUI_E100
\App.Abc.test.test\apps\GS\Data\PKG-SCCM\Flashplayer_19.012.20034_MUI_R101
-replace
操作仅考虑输入路径的 last 组件,因此适用于任何路径,只要最后一个组件前面有 \
.
对regex passed to -replace
and the ability to experiment with it, see this regex101.com page的解释。
如果您有每个文本文件的路径,您可以使用 Split-Path。
Split-Path -Path "\UNC\Folder\Folder\P100\Example.txt" -Parent