Prerequisites
If CSV input data doesn't satisfy an uncommunicated threshold regarding the number of columns and empty quoted/unquoted fields, CSV deserialization using ConvertFrom-Csv/Import-Csv yields no output. No error/warning is emitted either; the input is effectively ignored.
Steps to reproduce
Test 1
In the following examples, no custom object is emitted by ConvertFrom-Csv irrespective of row count.
# No custom object output, irrespective of row count.
# Example 1a:
@'
"P1"
""
'@ | ConvertFrom-Csv
# Example 1b:
@'
"P1"
""
""
""
'@ | ConvertFrom-Csv
Tests 2-3
In the following examples, a custom object is emitted for all rows except the last.
# Partial custom object output.
# Output for each row except the last.
# If there is only one row, no object is emitted.
# Example 2a:
@'
"P1","P2"
"",
'@ | ConvertFrom-Csv # Nothing
# Example 2b:
@'
"P1","P2"
"",
"",
'@ | ConvertFrom-Csv # 1 custom object
# Example 3a:
@'
"P1","P2"
,
'@ | ConvertFrom-Csv # Nothing
# Example 3b:
@'
"P1","P2"
,
,
'@ | ConvertFrom-Csv # 1 custom object
Tests 4-6
Custom object output is correct in following examples.
# Custom object output in examples 4-6.
# Example 4a:
@'
"P1","P2"
,""
'@ | ConvertFrom-Csv
# Example 4b:
@'
"P1","P2"
,""
,""
'@ | ConvertFrom-Csv
# Example 5a:
@'
"P1","P2"
"",""
'@ | ConvertFrom-Csv
# Example 5b:
@'
"P1","P2"
"",""
"",""
'@ | ConvertFrom-Csv
# Example 6a:
@'
"P1","P2","P3"
,,
'@ | ConvertFrom-Csv
# Example 6b:
@'
"P1","P2","P3"
,,
,,
'@ | ConvertFrom-Csv
Note:
- As of PS v7.5.0, the CSV data above (examples 1-6) is all generated by
ConvertTo-Csv, which may produce quoted ("") or unquoted empty fields by default. See:
- How
ConvertFrom-Csv interprets unquoted empty fields is also inconsistent. See:
Expected behavior
- Test 1: Should emit a custom object with a
P1 property.
- Tests 2a & 3a: Should emit a custom object with a
P1 and P2 property.
- Tests 2b & 3b: Should emit 2 custom objects, each with a
P1 and P2 property.
Actual behavior
- Test 1: No custom object output.
- Tests 2-3: Partial custom object output for all rows except the last.
Environment data
Name Value
---- -----
PSVersion 7.5.0-rc.1
PSEdition Core
GitCommitId 7.5.0-rc.1
OS Microsoft Windows 10.0.19045
Platform Win32NT
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
WSManStackVersion 3.0
Prerequisites
If CSV input data doesn't satisfy an uncommunicated threshold regarding the number of columns and empty quoted/unquoted fields, CSV deserialization using
ConvertFrom-Csv/Import-Csvyields no output. No error/warning is emitted either; the input is effectively ignored.Steps to reproduce
Test 1
In the following examples, no custom object is emitted by
ConvertFrom-Csvirrespective of row count.Tests 2-3
In the following examples, a custom object is emitted for all rows except the last.
Tests 4-6
Custom object output is correct in following examples.
Note:
ConvertTo-Csv, which may produce quoted ("") or unquoted empty fields by default. See:AutomationNullor$nullvalues #24699ConvertFrom-Csvinterprets unquoted empty fields is also inconsistent. See:ConvertFrom-Csvis inconsistently$Null#17702Expected behavior
P1property.P1andP2property.P1andP2property.Actual behavior
Environment data