Bird
Raised Fist0
PowerShellscripting~5 mins

CSV operations (Import-Csv, Export-Csv) in PowerShell - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What does the <code>Import-Csv</code> cmdlet do in PowerShell?
It reads data from a CSV file and converts each row into a PowerShell object, making it easy to work with the data in scripts.
Click to reveal answer
beginner
How does Export-Csv help in PowerShell scripting?
It takes PowerShell objects and saves them as a CSV file, allowing you to export data in a simple, readable format.
Click to reveal answer
intermediate
Why is it important to use the -NoTypeInformation parameter with Export-Csv?
Because it prevents PowerShell from adding extra type information as the first line in the CSV file, keeping the file clean and easier to use with other programs.
Click to reveal answer
beginner
Show a simple PowerShell command to import a CSV file named <code>data.csv</code>.
Import-Csv -Path "data.csv"
This command reads the CSV and outputs objects representing each row.
Click to reveal answer
beginner
How can you export a list of objects stored in a variable $users to a CSV file named users.csv without type info?
$users | Export-Csv -Path "users.csv" -NoTypeInformation
This saves the objects as CSV cleanly.
Click to reveal answer
What does Import-Csv return when it reads a CSV file?
ANothing, it only displays the file
BA list of PowerShell objects representing each row
CA binary file
DA plain text string of the CSV content
Which parameter prevents extra type info from being added when exporting CSV?
A-SkipHeader
B-CleanOutput
C-Raw
D-NoTypeInformation
How do you export objects stored in $data to a CSV file named output.csv?
AImport-Csv -Path output.csv
BExport-Csv -Input $data -File output.csv
C$data | Export-Csv -Path "output.csv" -NoTypeInformation
DSave-Data -File output.csv
What is the default delimiter used by Import-Csv and Export-Csv?
AComma (,)
BSemicolon (;)
CTab (\t)
DPipe (|)
If you want to read a CSV file and filter rows where the 'Age' column is greater than 30, which cmdlet would you use first?
AImport-Csv
BExport-Csv
CGet-Content
DConvertTo-Csv
Explain how you would use PowerShell to read a CSV file, modify some data, and save it back to a new CSV file.
Think about reading, changing, then writing data.
You got /3 concepts.
    Describe why CSV files are useful in scripting and automation tasks.
    Consider how CSV helps move data between tools.
    You got /4 concepts.

      Practice

      (1/5)
      1. What does the PowerShell cmdlet Import-Csv do?
      easy
      A. Reads a CSV file and converts each row into an object
      B. Saves objects into a CSV file
      C. Deletes a CSV file from disk
      D. Converts objects into JSON format

      Solution

      1. Step 1: Understand the purpose of Import-Csv

        Import-Csv reads data from a CSV file and creates objects where each row is an object with properties matching the CSV headers.
      2. Step 2: Compare with other options

        Export-Csv saves objects to CSV, deletion and JSON conversion are unrelated to Import-Csv.
      3. Final Answer:

        Reads a CSV file and converts each row into an object -> Option A
      4. Quick Check:

        Import-Csv = Reads CSV to objects [OK]
      Hint: Import-Csv reads CSV; Export-Csv writes CSV [OK]
      Common Mistakes:
      • Confusing Import-Csv with Export-Csv
      • Thinking Import-Csv deletes files
      • Assuming Import-Csv converts to JSON
      2. Which of the following is the correct syntax to export objects to a CSV file named data.csv?
      easy
      A. Export-Csv -Path data.csv -InputObject $objects
      B. Import-Csv -Path data.csv -InputObject $objects
      C. Export-Csv $objects data.csv
      D. Export-Csv -File data.csv -Objects $objects

      Solution

      1. Step 1: Identify correct Export-Csv syntax

        The correct syntax uses -Path to specify the file and -InputObject for the objects to export.
      2. Step 2: Eliminate incorrect options

        Import-Csv is for reading, not exporting. Options A and D use wrong parameter names or order.
      3. Final Answer:

        Export-Csv -Path data.csv -InputObject $objects -> Option A
      4. Quick Check:

        Export-Csv uses -Path and -InputObject [OK]
      Hint: Use -Path for file and -InputObject for data in Export-Csv [OK]
      Common Mistakes:
      • Using Import-Csv instead of Export-Csv
      • Wrong parameter names like -File or -Objects
      • Omitting parameter names and relying on position
      3. Given the CSV file users.csv with content:
      Name,Age
      Alice,30
      Bob,25

      What will the following PowerShell command output?
      Import-Csv users.csv | Where-Object { $_.Age -gt 27 } | Select-Object -ExpandProperty Name
      medium
      A. No output
      B. Bob
      C. Alice`nBob
      D. Alice

      Solution

      1. Step 1: Import and filter CSV data

        The command imports the CSV, then filters rows where Age > 27. Alice's age is 30, Bob's is 25, so only Alice passes.
      2. Step 2: Select and output the Name property

        Select-Object -ExpandProperty Name outputs the Name value directly, so output is 'Alice'.
      3. Final Answer:

        Alice -> Option D
      4. Quick Check:

        Filter Age > 27 = Alice [OK]
      Hint: Filter with Where-Object, then expand property for direct output [OK]
      Common Mistakes:
      • Confusing string output with array output
      • Using -ExpandProperty incorrectly
      • Assuming both names print without filtering
      4. You run this command to export data:
      $data | Export-Csv -Path output.csv

      But the CSV file contains extra quotes around each field. How can you fix this?
      medium
      A. Use Import-Csv instead of Export-Csv
      B. Add the parameter -NoQuotes to Export-Csv
      C. Add the parameter -NoTypeInformation to Export-Csv
      D. Use Export-Csv -Raw to avoid quotes

      Solution

      1. Step 1: Understand default Export-Csv behavior

        By default, Export-Csv adds type information as the first line and quotes fields. The extra quotes are normal but can be controlled.
      2. Step 2: Use -NoTypeInformation to remove type info and reduce quotes

        Adding -NoTypeInformation removes the type info line and often reduces unnecessary quotes.
      3. Final Answer:

        Add the parameter -NoTypeInformation to Export-Csv -> Option C
      4. Quick Check:

        -NoTypeInformation removes extra info and quotes [OK]
      Hint: Use -NoTypeInformation to clean Export-Csv output [OK]
      Common Mistakes:
      • Trying to use non-existent -NoQuotes parameter
      • Confusing Import-Csv with Export-Csv
      • Using -Raw which is invalid for Export-Csv
      5. You have a CSV file products.csv with columns Id,Name,Price. You want to increase the price by 10% and save the updated data back to products.csv. Which script correctly does this?
      hard
      A. Import-Csv products.csv | ForEach-Object { $_.Price = $_.Price + 10 } | Export-Csv products.csv
      B. $products = Import-Csv products.csv; $products | ForEach-Object { $_.Price = [math]::Round($_.Price * 1.1, 2) }; $products | Export-Csv -Path products.csv -NoTypeInformation
      C. $products = Import-Csv products.csv; foreach ($p in $products) { $p.Price = $p.Price * 1.1 }; Export-Csv $products products.csv
      D. Import-Csv products.csv | ForEach-Object { $_.Price = $_.Price * 1.1 } > products.csv

      Solution

      1. Step 1: Import CSV and update prices correctly

        $products = Import-Csv products.csv; $products | ForEach-Object { $_.Price = [math]::Round($_.Price * 1.1, 2) }; $products | Export-Csv -Path products.csv -NoTypeInformation imports CSV into $products, then uses ForEach-Object to update each Price by multiplying by 1.1 and rounding to 2 decimals.
      2. Step 2: Export updated objects back to CSV with -NoTypeInformation

        $products = Import-Csv products.csv; $products | ForEach-Object { $_.Price = [math]::Round($_.Price * 1.1, 2) }; $products | Export-Csv -Path products.csv -NoTypeInformation exports $products back to the same file with -NoTypeInformation to avoid extra lines.
      3. Step 3: Identify errors in other options

        Import-Csv products.csv | ForEach-Object { $_.Price = $_.Price + 10 } | Export-Csv products.csv adds 10 instead of 10%, $products = Import-Csv products.csv; foreach ($p in $products) { $p.Price = $p.Price * 1.1 }; Export-Csv $products products.csv has wrong Export-Csv syntax, Import-Csv products.csv | ForEach-Object { $_.Price = $_.Price * 1.1 } > products.csv redirects output incorrectly.
      4. Final Answer:

        $products = Import-Csv products.csv; $products | ForEach-Object { $_.Price = [math]::Round($_.Price * 1.1, 2) }; $products | Export-Csv -Path products.csv -NoTypeInformation -> Option B
      5. Quick Check:

        Import, update with ForEach-Object, Export with -NoTypeInformation [OK]
      Hint: Use Import-Csv, update in ForEach-Object, then Export-Csv -NoTypeInformation [OK]
      Common Mistakes:
      • Adding fixed amount instead of percentage
      • Wrong Export-Csv parameter order or syntax
      • Redirecting output instead of using Export-Csv
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard