【发布时间】:2017-07-10 21:52:43
【问题描述】:
我确定这个问题已经被问及并得到了回答,或者答案正盯着我的脸,但我不确定我是否正确地询问它以找到我正在寻找的答案。
我正在寻找使用 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 个可能的文件取决于它们正在运行的应用程序的版本。
一如既往地感谢您的帮助。
【问题讨论】:
-
如果您使用的是 PowerShell 版本 5 或更高版本,您可能需要考虑使用
ConvertFrom-StringData,这是为此类事情添加的新 cmdlet。 -
您的要求并不完全清楚。如果您不想递归,就不要使用
-recurse开关? -
我认为您正在搜索类似
Get-ChildItem E:\Users\*\*.ini
标签: powershell