我确定这个问题已被提问和回答,或者答案正在盯着我的脸,但我不确定我是否正确地要求找到答案我是&#39 ;我正在寻找。
我希望使用PowerShell搜索用户目录,从ini文件中提取特定行(从旧管理员保存不良记录中清除)。
我想做什么来减少搜索时间(很多目录要运行)以及我想根据生产和测试ini文件拆分我的结果集我正在寻找
这是文件夹结构的样子:
生产:
E:\Users\<username>\DIR\production.ini
对于测试:
E:\Users\<username>\DIR\Test\test.ini
所以我想运行这样的东西(在E :)的根部:
Get-ChildItem -Recurse -Path ".\DIR\*.ini" | Select-String "DeviceName="
Get-ChildItem -Recurse -Path ".\DIR\Test\*.ini" | Select-String "DeviceName="
这样,它会查看每个用户的文件夹中的确切路径,而不是通过所有子文件夹进行递归。我需要使用通配符ini,因为有2到3个可能的文件,具体取决于它们运行的应用程序的版本。
一如既往地感谢您的帮助。
答案 0 :(得分:0)
如果您知道项目名称和路径,我建议您在Get-Item
代替使用GCI
。
答案 1 :(得分:0)
正确的格式化使问题清晰,取消隐藏<UserName>
等。
根据您的PoSh版本,使用-Directory
或|where $_.PSIsContainer
首先迭代userFolders,然后直接检查两个可能的文件夹。
Get-ChildItem -Path E:\Users -Directory | ForEach-Object {
Get-ChildItem -Path "$($_.FullName)\Dir" -Filter *.ini -EA 0 |Select-String "DeviceName="
Get-ChildItem -Path "$($_.FullName)\Dir\Test" -Filter *.ini -EA 0 |Select-String "DeviceName="
}
为了抑制错误我包含了缩写。 -EA 0
-ErrorAction SilentlyContinue