CSV Row Problem

Hey guys! I am currently trying to pull a list of names from a CSV file and creating directories for each name.
The original directory I want to copy is the variable ($Folder). (There are other folders within it hence the -recurse)

The CSV has two columns firstname, lastname and various dummy names in the following rows.

I am getting the first row/name coming back perfect, but it seems I can’t figure out how to do a loop of each row after that one.
I have been looking all over the net for a solution. Thanks for your time, any help would be appreciated.

Because your getname function returns after the first iteration through data imported it will only return the first row.
something like this may be more useful to you

$ImportCsv = Import-Csv -Path $Csv
foreach($row in $ImportCsv ) {
    $firstname = $row.firstname 
    $lastname =  $row.lastname
    $name = "$firstname$lastname"
    Copy-item $Folder\* -destination "C:\Users\jp\Desktop\folderscript\testfolder\$($name)" -Recurse
}

You are a deadset legend! Thank you so much Jonathan!

You can simplify this a bit more. If you look at “Get-Help Copy-Item -Full”, you’ll see that you can pass the Path and Destination by ByPropertyName:

  -Path 
        
        Required?                    true
        Position?                    0
        Accept pipeline input?       true (ByValue, ByPropertyName)
        Parameter set name           Path
        Aliases                      None
        Dynamic?                     false

If we utilize calculated expressions, you can name the property to Path and Destination respectively. Then you can pipe the data directly to Copy-Item:

$csv = Import-Csv -Path C:\Users\Rob\Desktop\Archive\test.csv | 
Select FirstName,
       LastName,
       @{Name="Path";Expression={"C:\Users\Rob\Desktop\Archive\*"}},
       @{Name="Destination";Expression={"C:\Users\Rob\Desktop\{0}{1}" -f $_.FirstName, $_.LastName}}
        
$csv | Copy-Item -WhatIf 

If the column doesn’t match a parameter (e.g. FirstName, LastName), it is ignored. If your property name matches a parameter name (or Alias), it will pass that to the command. This is what the $CSV looks like:

FirstName LastName Path                           Destination                     
--------- -------- ----                           -----------                     
Rob       Simmers  C:\Users\Rob\Desktop\Archive\* C:\Users\Rob\Desktop\RobSimmers 
John      Smith    C:\Users\Rob\Desktop\Archive\* C:\Users\Rob\Desktop\JohnSmith  
Sam      Johnson  C:\Users\Rob\Desktop\Archive\* C:\Users\Rob\Desktop\SamJohnson

The fun part about this approach is you don’t need a foreach loop, because it will be done with the Process inside the copy item function.

Please disregard wrong forum venue