PowerShell脚本-报告文件名中的特定字符串

PowerShell脚本-报告文件名中的特定字符串,powershell,Powershell,我目前正在尝试构建一个简单的脚本,该脚本将从文件名返回一个字符串 我有一个目录,其中包含的文件名如下: C:\[20141002134259308][302de103-6dc8-4e29-b303-5fdbd39c60c3][U0447744][10.208.15.40_54343][ABC_01].txt C:\[20141002134239815][302de103-6dc8-4e29-b303-5fdbd39c60c3][U0011042][10.168.40.34_57350][ABC_

我目前正在尝试构建一个简单的脚本,该脚本将从文件名返回一个字符串

我有一个目录,其中包含的文件名如下:

C:\[20141002134259308][302de103-6dc8-4e29-b303-5fdbd39c60c3][U0447744][10.208.15.40_54343][ABC_01].txt
C:\[20141002134239815][302de103-6dc8-4e29-b303-5fdbd39c60c3][U0011042][10.168.40.34_57350][ABC_01].txt
C:\[20141002134206386][302de103-6dc8-4e29-b303-5fdbd39c60c3][u1603381][10.132.171.132_54385][ABC_01].txt
C:\[2014100212260259][302de103-6dc8-4e29-b303-5fdbd39c60c3][U0010217][10.173.0.132_49921][ABC_01].txt

因此,我想从每个文件名中提取以字母U和七位数字开头的用户ID,然后创建一个新的txt o csv并列出所有这些ID。就这样。

正如Patrice指出的那样,你真的应该自己尝试,并带着你尝试过的相关代码和你得到的错误来找我们。也就是说,我很无聊,这真的很容易。我会对文件名使用正则表达式匹配,然后对于每个匹配的文件,我会输出捕获的字符串:

Get-ChildItem 'C:\Path\To\Files\*.txt' | Where{$_.Name -match "\[(U\d{7})\]"} | ForEach{$Matches[1]}
这将返回:

U0447744
U0011042
u1603381
U0010217

如果要将其输出到文件中,只需将其导出到文件中,并指定要保存该文件的完整路径和文件名。

Welcome?你尝试了什么?我明白,我非常感谢你!事实上,我是自己整理出来的(你的一些旧帖子实际上是MadTechnician)这就是我想到的:GCI$path |?{$.BaseName-match“0c3][(.*?)””}{$.CopyTo($($.Directory)\$($matches[1])}}导出Csv“C:\IAM\test list.Csv”喜欢导出Csv及其结果,现在我只是想过滤并得到我需要的东西。