我正在构建一个脚本,它可以访问大量文件并提取特定的字符串以便分配为变量。
这个字符串在所有文件中都很相似,所以这不是问题。我可以将此过程作为单独事件运行(定义单一源文件)。
$hostname_import = select-string .\test.txt -Pattern 'hostname ABC-.+'
$hostname = $hostname_import -replace '.+ ',''
上述代码将输出目标文件中特定的主机名(第二个函数是裁剪字符串"hostname"和空格),我可以使用该变量按需执行各种操作。
我的问题在于如何在foreach循环中执行此函数,以便我可以获取初始文件,执行select-string函数(或类似函数),并在循环中按预期执行数据修改。
为了背景说明,我正在查看配置文件,并基于这些配置构建一个单独的文件以报告发现情况。报告构建的一部分要求获取设备的主机名。
--编辑1: 经过与我的小黄鸭协商后,我将尝试将这些文件作为CSV导入,以便可能达到解决方案。
感谢@Otter帮助我解决问题。我之前有一个脚本使用了这个函数,但由于某些原因,我无法像预期的那样执行该函数。这个脚本与我的上一个脚本的不同之处在于$_.Fullname。非常有帮助!
Select-String
是低效的。最好将Get-ChildItem
的输出直接传递到Select-String
中。此外,为了仅操作匹配行的文本,请使用$hostname_import.Line
。 - mklement0