CSVファイルをインポートしてからフルユーザ名domain\username
をusername
に置き換える必要があります。インポートされたCSVファイルの文字列を置き換えてください
次の行は機能しますが、修正されたユーザー名のみが出力として表示され、フルファイルは表示されません。
助言してください。
CSVファイルをインポートしてからフルユーザ名domain\username
をusername
に置き換える必要があります。インポートされたCSVファイルの文字列を置き換えてください
次の行は機能しますが、修正されたユーザー名のみが出力として表示され、フルファイルは表示されません。
助言してください。
文字列データに対して置換を実行し、ConvertFrom-Csv
を使用してオブジェクトに変換することができます。
$TestFile = (Get-Content .\file.csv) -replace 'domain\\',''
$NewFile = ConvertFrom-Csv $TestFile
入力テーブルから列名を取得し、テーブルの各行を繰り返し、必要な変更を加えて新しいカスタムオブジェクトを出力します。出力として新しい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
にスクリプトとパイプに上記のコードを置きます。
あなたが戻ってパイプラインにデータを出力する必要がある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
}
とコードは、あなたがやりたいだろう。
いいえ、パターンの置き換えはグローバル(つまり、列に固有のものではない)です。 –