如何用PowerShell批量修改多个用户目录下DefaultPrint.ini的配置值
错误原因
- 路径拼接逻辑位置错误:你将
$IniPath的生成逻辑写在了foreach循环之外,当$User变量为多用户数组时,脚本会直接将整个数组的所有用户名拼接为一个字符串生成路径,不会在循环中逐用户生成独立路径。 - 变量重名冲突:存储多用户列表的变量和循环迭代变量都使用了
$User命名,执行时会出现变量值覆盖的逻辑问题。
修复后脚本
场景1:直接定义用户数组
# 定义用户列表数组,避免和循环迭代变量重名 $userList = "Max","John","Sophia" foreach ($user in $userList) { # 路径拼接移到循环内部,逐用户生成独立路径 $iniFile = "\\Network1\Home\$user\DefaultPrint.ini" # 可选路径校验,避免用户目录不存在时报错 if (Test-Path -Path $iniFile) { # 加-Raw参数一次性读取全文件,替换效率更高 $iniText = Get-Content -Path $iniFile -Raw $newText = $iniText.Replace("Old_Priter","New_Printer") Set-Content -Path $iniFile -Value $newText -Force Write-Host "已完成用户 $user 的配置修改" } else { Write-Warning "用户 $user 的配置文件不存在,路径:$iniFile" } }
场景2:从CSV文件导入用户名
仅需替换用户列表定义行即可,其余逻辑和上述脚本一致:
# 要求CSV文件第一列表头为User,每行存储一个用户名 $userList = (Import-Csv -Path .\Users.csv).User
额外注意事项
- 原脚本中替换的源字符串为
Old_Priter,存在拼写偏差,如果你实际需要替换的是Old_Printer请自行修正拼写 - 批量执行前建议先选取1-2个测试用户验证修改效果,避免批量操作出错
内容的提问来源于stack exchange,提问作者Luthorhuss
相关产品推荐
相关产品推荐

