我正在尝试替换另一个 PowerShell 文件中的几个字符串。
$Source_IP = Read-Host 'Enter source IP'
$Target_IP = Read-Host 'Enter target IP'
Run Code Online (Sandbox Code Playgroud)
通过在另一个 PowerShell 脚本中使用以下行,文件显示为已修改,但更改不会生效。
(Get-Content "C:\Solutions.ps1") -replace "$Target_IP = Read-Host 'Enter target IP'", "$Target_IP = '192.168.0.221'" | Set-Content "C:\Solutions.ps1"
Run Code Online (Sandbox Code Playgroud)
是否有更改不生效的原因?
我相信这是在 Windows Server 2008 和 PowerShell 版本 2 上以管理员身份运行的。
作为PetSerAl指出的-replace比较运营商支持正则表达式。虽然您可以在您的模式中使用某种程度的表达式,但您会增加不必要的复杂性,尤其是因为您无论如何都只是使用简单的匹配。
更简单的解决方案是使用字符串方法.Replace()。
$filePath = "C:\Solutions.ps1"
(Get-Content $filePath).Replace($Source_IP,$Target_IP) | Set-Content $filePath
Run Code Online (Sandbox Code Playgroud)
请注意,.Replace()区分大小写。如果您只是替换 IP 地址,这是一个有争议的问题。我不确定您为什么会遇到第二个文件的问题。
| 归档时间: |
|
| 查看次数: |
15677 次 |
| 最近记录: |