Экспорт конкретных столбцов из Excel в .csv Powershell

У меня есть такой код для экспорта файла Excel с двумя рабочими таблицами в два файла csv. Проблема в том, что я в настоящее время экспортирую целые листы, и я хочу экспортировать только эти 3 столбца из моего цикла. Как я могу их сохранить? Они должны быть в порядке, потому что я хочу импортировать их позже в AD.

Function ExportWSToCSV ($excelFileName , $csvLoc){ #Sample use in a console: ExportWSToCSV -excelFileName "Test_Peoplesoft.xls" -csvLoc "y:\Application Data\CSVFiles\" $CultureOld = [System.Threading.Thread]::CurrentThread.CurrentCulture #Original culture info $CultureUS = [System.Globalization.CultureInfo]'en-US' #US culture info $excelFile = "y:\Application Data\Test_Peoplesoft.xls" #Loc of Excel file .xls , #csvLov - Loc of output files in format .csv [System.Threading.Thread]::CurrentThread.CurrentCulture = $CultureUS $E = New-Object -ComObject Excel.Application $E.Visible = $false $E.DisplayAlerts = $false $wb = $E.Workbooks.Open($excelFile) $intRow = 2 $intRowMax =($ws.UsedRange.Rows).count $elements = $email -or $costcode -or $leader Do{ foreach($ws in $wb.sheets.item("Inactive")){ if($elements -ne $null ){ $email = $ws.Cells.Item($intRow, 4).Value() $costcode = $ws.Cells.Item($intRow, 15).Value() $leader = $ws.Cells.Item($intRow, 20).Value() }else{Write-Host "Null Value in one of the attributes"} } <# foreach($ws in $wb.sheets.item("Inactive")){ $email = $ws.Cells.Item($intRow, 4).Value() $costcode = $ws.Cells.Item($intRow, 15).Value() $leader = $ws.Cells.Item($intRow, 20).Value() } #> $user = $email + "_" + $costcode + "_" + $leader write-host $intRow " " $user $intRow++ }While ($ws.Cells.Item($intRow,1).Value() -ne $null) foreach ($ws in $wb.Worksheets) { Write-Host "Processing Worksheet: " $ws.Name $n = $csvLoc + $excelFileName + "_" + $ws.Name #Name variable - Output file loc + excel file name + worksheet name $ws.SaveAs($n + ".csv", 6) #Saving file to .csv } $E.Quit() [System.Threading.Thread]::CurrentThread.CurrentCulture = $CultureOld 

}

    Что-то вроде этого должно работать:

    Сначала настройте массив, содержащий наш список экспортированных пользователей, например:

     $exportList = @() 

    (место перед началом цикла строк)

    Затем прокрутите строки на рабочем листе с помощью цикла while и добавьте объект пользователя, чтобы добавить список экспорта таким образом

     # Create userObj with the required properties $userObj = New-Object System.Object $userObj | Add-Member -Type NoteProperty -Name Email -Value $email $userObj | Add-Member -Type NoteProperty -Name CostCode -Value $costcode $userObj | Add-Member -Type NoteProperty -Name Leader -Value $leader # Add $userObj to our list to be exported $exportList += $userObj 

    И, конечно, экспортируйте его в .csv

     $exportList | Export-Csv $pathToCsvFile 
    Давайте будем гением компьютера.