PowerShell:如何将 $env:HOSTNAME/$env:Computer) 作为文本替换的一部分插入到文本文件中?

标签 powershell text replace

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

这个脚本是为了让我的生活更轻松 -

$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:如何将 $env:HOSTNAME/$env:Computer) 作为文本替换的一部分插入到文本文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51543683/

相关文章:

python - 用字符串中的单词替换单词

regex - 程序员将如何处理这个文本处理任务?

python - 如何从 python 中的字符串中删除不需要的字符?

javascript - 只保留 A-Z 0-9 并使用 javascript 从字符串中删除其他字符

powershell - 列出所有域计算机上的本地管理员组成员身份

mysql - url 文本压缩(不是缩短)并存储在 mysql 中

mysql - 修剪列中逗号分隔值中的前导零

XML属性查询

.net - 试图了解这段代码对 $PSBoundParameters 对象做了什么

powershell - 在 Windows 容器上使用复杂的 powershell 脚本构建 Dockerfile