对于在工作站上运行的应用程序,我有一个很长的自定义应用程序配置文件,其中某些文本元素必须在系统之间手动更改。

该脚本旨在使我的生活更轻松-

$content = Get-Content("C:\file.text")
$content = $content.replace("%DoTheThing?%","TRUE")
$content = $content.replace("%Place%","SpecificPlace")
$content = $content.replace("%SystemName%",$env:HOSTNAME)
$content = Set-Content("C:\file.text")

当我执行脚本时,第一个文本项被正确替换,第三个文本项被删除而不是替换。作为Power Shell的新手,我该如何纠正-实际的系统名称正在替换%SystemName%部分?

最佳答案

问题是$env:HOSTNAME不是有效的环境变量。
要获取所有环境变量的列表,可以运行Get-ChildItem Env:$Env:COMPUTERNAME应该可以解决问题,因此将其更改为:

$content = Get-Content("C:\file.text")
$content = $content.replace("%DoTheThing?%","TRUE")
$content = $content.replace("%Place%","SpecificPlace")
$content = $content.replace("%SystemName%",$Env:COMPUTERNAME)
$content = Set-Content("C:\file.text")

关于powershell - PowerShell:作为文本替换的一部分,如何将$ env:HOSTNAME/$ env:Computer)插入文本文件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51543683/

10-17 03:11