PowerShell脚本:检测文件存在并替换指定内容
批量修改多台电脑INI文件计时器参数的PowerShell实现
我们公司需要为约310台电脑修改.ini文件中的计时器参数以延长计时时长,查找现有脚本后发现无法满足需求,遂自行编写了以下PowerShell脚本。
脚本部署方法
方法一:通过组策略部署
- 打开组策略编辑器,定位到「计算机配置→策略→Windows设置→脚本(启动/关机)」,点击「显示文件」,将.ps1脚本放入指定路径(示例路径:
\\domain.local\SysVol\domain.local\Policies\{907A196A-0859-4AFB-9BE7-6BD4BFA94265}\Machine\Scripts\Startup)。 - 返回脚本设置界面,点击「添加」,浏览并选择该.ps1文件。
- 同时在同一条策略中配置脚本执行延迟:定位到「计算机配置→管理模板→系统→组策略→配置登录脚本延迟」,设置为4分钟。
方法二:通过Lansweeper执行
直接通过Lansweeper执行该脚本,操作更便捷高效。
欢迎试用、修改并指正问题,若有修改建议请告知,帮助更多有类似需求的人。
PowerShell脚本内容
复制时请注意检查符号(网页复制可能会破坏符号):
$FilePath = "" # 在引号内填入要查找和修改的文件路径及名称,例如 c:\Test\file.ini $Search_entry_existing = "" # 在引号内填入要查找的内容 $Search_entry_change = "" # 在引号内填入要替换的目标内容 Test-Path -Path $FilePath -PathType Leaf # 检查文件是否存在 Select-String -Path $FilePath -Pattern "" # 在引号内填入要搜索的匹配模式 If (Test-Path $FilePath) { $Check = Select-String -Path $FilePath -Pattern "" # 在引号内填入要搜索的匹配模式 If ((Get-Content $FilePath) -notcontains 'TimerC=120') { # 在单引号内填入要检查是否不存在的内容,示例为TimerC=120 cls echo "File Exists" echo "************************************************************" echo "*** 目标文件 $FilePath 包含字符串 $Check ***" echo "*** 正在将TimerC设置修改为120秒" # 示例场景:原参数为TimerC=75,需修改为120秒 (Get-Content $FilePath) -replace '(TimerC)(.*)', '$1=120' | Set-Content $FilePath # 替换目标字符串并保存文件 } else { # 若目标参数已符合要求,则不执行修改操作 cls echo "*** 目标文件 $FilePath 已包含字符串 $Search_entry_change ***" echo "*** 无需修改,TimerC已设置为120秒 ***" } } else { # 若未找到指定路径下的文件,说明对应程序未安装 Write-Host "未找到目标文件,对应程序未安装!!!" }
内容的提问来源于stack exchange,提问作者Harry_the_Greek
相关产品推荐
相关产品推荐

