When using the Import-Csv cmdlet in PowerShell to import a CSV file, the first line in the file is used as the header by default.
However, occasionally you may want to import a CSV file that has no header row.
Method 1: Use Import-Csv with Custom Header Names
-Header Team, Points, AssistsThis particular example imports the CSV file specified at the path in the $my_file variable and specifies that the header names should be Team, Points and Assists.
Method 2: Use Import-Csv with Numbered Header Names
= 1..3Import-Csv -Header This particular example imports the CSV file specified at the path in the $my_file variable and specifies that the header names should simply be the numbers ranging from 1 to 3.
This method is particularly useful when you have a lot of columns and you don’t want to individually specify each column name.
For example, you could use $headers = 1..500 to use the integers ranging from 1 to 500 as the column names for a file that has 500 columns.
Example 1: Use Import-Csv with Custom Header Names
We can use the Get-Content cmdlet to view the content of this file:

The file contains three columns that show the team name, points and assists for various basketball players.
Notice that the file does not have a header row.
-Header Team, Points, Assists
We can see that we’re able to successfully import this CSV file and specify the header names that should be used.
Example 2: Use Import-Csv with Numbered Header Names
We can use the Get-Content cmdlet to view the content of this file:

Notice that the file does not have a header row.
Import-Csv -Header 
We can see that we’re able to successfully import this CSV file and specify that the numbers 1, 2 and 3 should be used as the header names.
PowerShell: How to Use Export-Csv with No Headers
PowerShell: How to Use Import-Csv and Foreach
PowerShell: How to Merge Multiple CSV Files into One
dir(alias toGet-ChildItem) returns fileinfo, and directoryinfo objects. If you want to see all the members and methods that are available to you, you can pipe to Get-Member. If you’d like to select all properties than what is shown, you can pipe to Select-Object and specify individual properties, or all using*
By default Get-Member hides a few members along with the PSStandardMembers property:
Get-ChildItem -File | Get-Member -Name PSStandardMembersThese members will only reveal if you use the GetMember -Force switch:
Get-ChildItem -File | Get-Member -Name PSStandardMembers -Force TypeName: System.IO.FileInfo
Name MemberType Definition
---- ---------- ----------
PSStandardMembers MemberSet PSStandardMembers {DefaultDisplayPropertySet}(Get-ChildItem -File)[0].PSStandardMembers.DefaultDisplayPropertySet.ReferencedPropertyNames
LastWriteTime
Length
NameI have no clue why the specific
Modeproperty also shows up in table format while it isn’t actually listed here and I would be please if someone can explain this part
The Select-Object will indeed remove this decoration:
Get-ChildItem -File | Select-Object * | Format-Table -Property @{ e='*'; width = 7 }
PSPath PSParen PSChild PSDrive PSProvi PSIsCon Mode ModeWit Version BaseNam Resolve Target LinkTyp Length Directo Directo IsReadO FullNam Extensi Name Exists Creatio Creatio LastAcc LastAcc LastWri LastWri LinkTar UnixFil Attribu tPath Name der tainer houtHar Info e dTarget e ryName ry nly e on nTime nTimeUt essTime essTime teTime teTimeU get eMode tes dLink c Utc tc
------ ------- ------- ------- ------- ------- ---- ------- ------- ------- ------- ------ ------- ------ ------- ------- ------- ------- ------- ---- ------ ------- ------- ------- ------- ------- ------- ------- ------- -------
Micros… Micros… dir.ps1 P Micros… False -a--- -a--- File: … dir P:\Sta… 383 P:\Sta… P:\Sta… False P:\Sta… .ps1 dir.ps1 True 9/7/20… 9/7/20… 9/7/20… 9/7/20… 9/7/20… 9/7/20… -1 ArchiveBut you might simply create your own DefaultDisplayPropertySet on each object like this:
$DefaultDisplayPropertySet = [System.Management.Automation.PSPropertySet]::new( 'DefaultDisplayPropertySet',[string[]]('Name', 'FullName')
)
$PSStandardMembers = [System.Management.Automation.PSMemberInfo[]]$DefaultDisplayPropertySet
$Dir = Get-ChildItem -File | Select-Object * | Foreach-Object { $_ | Add-Member MemberSet PSStandardMembers $PSStandardMembers -PassThru
}The object list ($Dir) has still all standard properties available, e.g.:
$Dir.LastWriteTime
Thursday, September 7, 2023 11:07:32 AMBut it only shows just the two default properties when outputted to the display:
$Dir
Name FullName
---- --------
dir.ps1 C:\FullPath\Test.ps1




