2017-03-22 12 views
0

PowerShellでは、SOというフィールドを持つCSV SAMTemp2をインポートしています。場合によってはSOに "NW"が入力されることがあります。この場合、ProdProjというフィールドを同じ行から引き出し、ProdProjのデータでSOのデータを置き換えて、その状態でデータをエクスポートします。1つのCSVフィールドを別のPowerShellで置き換える

$RepNW = Import-Csv $SAMTemp2 
foreach($d in $data){ 
If($d.SO -eq "NW"){($d.SO).Replace($d.ProdProj)}} 
$RepNW | Export-Csv $SAMTemp -NoTypeInformation 

エラーは発生しませんが、これは何もしないようです。誰でも私を助けることができますか?下のマット・パー

更新

、私が試した:

$RepNW = Import-Csv $SAMTemp2 
foreach($d in $RepNW){ 
If($d.SO -eq "NW"){$d.SO = ($d.SO).Replace($d.ProdProj)}} 
$RepNW | Export-Csv $SAMTemp -NoTypeInformation 

をしかし、私は何の変化も見ていませんよ。いかなる援助も感謝します。

+0

とパイプラインのすべてを行うには、このおそらく最も簡単。 '$ d.SO =($ d.SO).Replace($ d.ProdProj)'はそれを行うべきです。他の改善も同様に役立ちます。 – Matt

+1

$データはどこから来たのですか?あなたはvar $ RepNW – LotPings

+0

@ LotPings>を読んでいます。ありがとう。私は逃しました。 – Nate

答えて

3

LotPingsこのラインforeach($d in $data){で指摘したように、あなたが$dataを定義していないと、あなたが、それはむしろあなたがに等しくなるようにプロパティを1つだけを設定することができReplace()を使用するよりも、第二にforeach($d in $RepNW){

であることを意味しているようですその他。

最後に、あなたが変更を書き戻していないForEach-Object

Import-Csv $SAMTemp2 | ForEach-Object { 
    If($_.SO -eq "NW"){ 
     $_.SO = $_.ProdProj 
    } 
    $_ 
} | Export-Csv $SAMTemp -NoTypeInformation 
+0

ありがとう!これが答えでした。そして@Mattはあなたの欠陥のある交換を正しく示しています。私はスクリプト作成だけでなく、多くの欠陥があります。 – Nate

関連する問題