2013-03-08 33 views
1

首先:對不起,我的壞英語。get-content -multiple替換

問題:

  1. 我有姓名,電子郵件,住址的30個用戶
  2. 我有一個HMTL(或RTF或TXT)與名稱的佔位符等的.csv文件(NameOfUser )和電子郵件地址(EmailUser)(文檔中的某處並且有時是多個)。
  3. 我想讀的CSV文件爲每個用戶名/電子郵件i want to: 一)與CSV文件 B的$ User.Username項替換詞NameOfUser)與$ USER替換詞EmailUser。 CSV文件的電子郵件進入 c)通過寫新內容的新文件到\ UNC \用戶名\新的HTML file.htm

我的問題: 如果我只改變一件事,姓名或電子郵件地址,輸出工作。 如果我把第二個替換放入foreach-object部分,輸出會導致錯誤。 我必須改變5個不同的Entrys,並希望我可以修復它在一個get-content | ..... 步。

腳本的部分A:

$userfile = import-csv \\the-fileserver\User.csv 
foreach ($User in $Userfile) { 

    Get-Content \\the-fileserver\File.htm | foreach-object { 
      $_ -replace 'Username', $User.Name 
      $_ -replace 'email-adresse', $User.Email 

      } | set-content -path $NewHTMFile 

問題: 每條線出現2(或更多等於-replace條目)時報在$ NewHTMFile :(

由於提前 丹尼爾

+0

@ C.B.的答案似乎是正確的。 您的問題來自'-replace'不會替代'$ _',而是通過修改返回一個新字符串。這就是爲什麼你的腳本每行寫入輸出幾次。每個-replace返回一個新的字符串,然後將其發送到'set-content'。 – Poorkenny 2013-03-08 15:00:36

回答

1

嘗試

... 
Get-Content \\the-fileserver\File.htm | foreach-object { 
      $_ -replace 'Username', $User.Name -replace 'email-adresse', $User.Email } 
... 
+0

您的回答第一。謝謝,那有效。感謝各位在論壇中的出色工作! – Daniel4711 2013-03-08 20:54:05

1

沒有測試,但我覺得這shouild工作,並避免在磁盤驅動器中的一些咀嚼:

$userfile = import-csv \\the-fileserver\User.csv 
$HTML = Get-Content '\\the-fileserver\File.htm' 

foreach ($User in $Userfile) 
    { 
    $HTML -replace 'Username', $User.Name -replace 'email-adresse', $User.Email | 
    set-content -path $NewHTMFile 
    }