簡體   English   中英

Powershell - 替換文件中的字符串

[英]Powershell - replace string in file

我正在嘗試編輯名為 prefs.cfg 的配置文件的內容。 它有兩行:

Server.Name "test"
VoIP.Enabled "1"

我正在嘗試更輕松地替換字符串,但我似乎一直在搞砸。

我寫了一些東西,如果有人能在我的腳本中指出我出錯的地方,我將不勝感激。

$prefs = Get-Content .\prefs.cfg

$prefs | Select-String "Server.Name"

$servername = Read-Host -Prompt "Enter Server Name"

Write-Host $servername

$prefs -replace $servername

$prefs
  • 盡管您將$prefs傳遞給Select-String-replace ,但這些操作的結果並未分配給變量。 所以你以后不能使用它們。

  • 一個參數被傳遞給-replace 它期望兩個:替換什么,替換什么。 編輯:如果提供了單個參數,則將其視為“要替換的內容”。 由於沒有提供“用什么替換”,它將被替換為空(即刪除)

  • Select-String-replace使用正則表達式。 這項任務似乎有點矯枉過正。 Where-Object.Replace完全可以.Replace這項任務。


$prefs = Get-Content .\prefs.cfg

# Get the line using Where. * is wildcard
$oldServerLine = $prefs | Where-object {$_ -like "Server.Name*"}

$servername = Read-Host -Prompt "Enter Server Name"

Write-Host $servername

# Replace old line with new line. ` is the escape character so you get " as expected.
$newPrefs = $prefs.Replace($oldServerLine,"Server.Name `"$servername`"")

$newPrefs

相關: -replace 和 .Replace 之間的區別

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM