2017-08-30 14 views

答えて

1

文字列データに対して置換を実行し、ConvertFrom-Csvを使用してオブジェクトに変換することができます。

$TestFile = (Get-Content .\file.csv) -replace 'domain\\','' 
$NewFile = ConvertFrom-Csv $TestFile 
+2

いいえ、パターンの置き換えはグローバル(つまり、列に固有のものではない)です。 –

0

入力テーブルから列名を取得し、テーブルの各行を繰り返し、必要な変更を加えて新しいカスタムオブジェクトを出力します。出力として新しいCSVファイルを作成するには

$table = Import-Csv "Test.csv" 

# Get column names 
$columnNames = ($table | Select-Object -First 1).PSObject.Properties | 
    Select-Object -ExpandProperty Name 

# Iterate each row in the table 
foreach ($row in $table) { 
    $outputObject = New-Object PSObject 
    foreach ($columnName in $columnNames) { 
    if ($columnName -eq "Username") { 
     $outputObject | Add-Member NoteProperty "Username" ($row.Username.Split('\')[1]) 
    } 
    else { 
     $outputObject | Add-Member NoteProperty $columnName $row.$columnName 
    } 
    } 
    $outputObject 
} 

は、Export-Csvにスクリプトとパイプに上記のコードを置きます。

1

あなたが戻ってパイプラインにデータを出力する必要があるForEach-Objectループ付きCSV入力を処理します。また、-replace演算子は、変数またはプロパティをインプレースで変更しません。値を受け取り、作業を行い、変更された文字列を成功出力ストリームに出力します。プロパティーを更新する場合は、変更した値をそのプロパティーに戻す必要があります。

変更この:この中

$TestFile = Import-Csv .\file.csv 
$NewFile = $TestFile | ForEach-Object {$_."Username" -replace 'domain\\',''} 

$NewFile = Import-Csv .\file.csv | ForEach-Object { 
    $_.Username = $_.Username -replace 'domain\\', ''  # update username 
    $_         # feed data back into the pipeline 
} 

とコードは、あなたがやりたいだろう。

関連する問題