Как экспортировать результаты Get-ADUser в CSV без кавычек и с дополнительными пустыми полями?

Вопрос или проблема

Я пытаюсь экспортировать некоторые данные из нашей Active Directory в файл .csv. Файл должен содержать определенные столбцы (так как инструмент, который будет импортировать .csv файл, очень строгий, и я не могу его изменить), которые у меня отсутствуют, и он не обрабатывает кавычки.

На данный момент у меня есть следующее (с большим количеством полей, но это пример):

Get-ADUser -Filter {(enabled -eq $true)} -Properties * | Select-Object -Property @{Name="FirstName";Expression={$_."GivenName"}},  
    @{Name="LastName";Expression={$_."SurName"}},  
    @{Name="UserID";Expression={$_."EmployeeId"}} | Export-CSV -NoTypeInformation -Encoding UTF8 -Path Data.csv

Это экспортирует файл .csv, в котором каждое поле помещается в двойные кавычки, поэтому мой первый вопрос: как предотвратить эти двойные кавычки? Я нашел параметр -UseQuotes, доступный начиная с PowerShell 7, но я не могу изменить версию PowerShell (изменение программного обеспечения не разрешено на сервере).

Мой второй вопрос: как я могу добавить пустой столбец в приведенный выше список? Я пытался добавить

@{Name="Blank";Expression={$_.""}},
"",
Something_That_Doesnt_Exist

Но это дает либо ошибку, либо пустое значение, заключенное в двойные кавычки.

Есть идеи, как я могу получить желаемый результат, не обрабатывая .csv файл после его создания?

Чтобы экспортировать без кавычек, используйте параметр -UseQuotes Never.

Для пустого поля используйте: @{Name="Blank";Expression={$null}}.
Или, если это выводится как строка $null, то используйте строку, такую как " ".

Ответ или решение

Чтобы экспортировать результаты команды Get-ADUser в файл CSV без кавычек и с добавлением пустых полей, вы можете использовать следующий подход.

1. Экспорт без кавычек

Для того чтобы избежать автоматического добавления кавычек в файл CSV, вы можете воспользоваться параметром -UseQuotes, который доступен в PowerShell 7 и выше. Однако, если вы не можете обновить версию PowerShell на вашем сервере, существует альтернатива, позволяющая вам вручную формировать вывод и сохранять его в CSV формате.

Пример скрипта без использования -UseQuotes:

# Получение данных пользователей из Active Directory
$users = Get-ADUser -Filter { (enabled -eq $true) } -Properties * | 
    Select-Object -Property @{
        Name = "FirstName"; Expression = { $_.GivenName }
    }, @{
        Name = "LastName"; Expression = { $_.SurName }
    }, @{
        Name = "UserID"; Expression = { $_.EmployeeId }
    }, @{
        Name = "Blank"; Expression = { "" }  # Пустое поле
    }

# Форматирование вывода в CSV без кавычек
$output = $users | ConvertTo-Csv -NoTypeInformation -Delimiter ';'
$output -replace '"', '' | Set-Content -Path "Data.csv"

В этом коде используется команда ConvertTo-Csv, чтобы преобразовать вывод в строку формата CSV. Затем применяется -replace для удаления кавычек, и результирующие данные записываются в файл.

2. Добавление пустого поля

Для добавления пустого столбца в вывод, вы можете использовать следующую конструкцию в Select-Object:

@{Name="Blank"; Expression={""}}  # Это добавит пустой столбец

Таким образом, состояние пустого столбца не будет заполняться кавычками.

Итоговый код

Объединяя все вышесказанное, итоговый код будет выглядеть следующим образом:

# Получение данных пользователей из Active Directory
$users = Get-ADUser -Filter { (enabled -eq $true) } -Properties * | 
    Select-Object -Property @{
        Name = "FirstName"; Expression = { $_.GivenName }
    }, @{
        Name = "LastName"; Expression = { $_.SurName }
    }, @{
        Name = "UserID"; Expression = { $_.EmployeeId }
    }, @{
        Name = "Blank"; Expression = { "" }  # Пустое поле

# Форматирование вывода в CSV без кавычек
$output = $users | ConvertTo-Csv -NoTypeInformation -Delimiter ';'
$output -replace '"', '' | Set-Content -Path "Data.csv"

Теперь файл Data.csv будет содержать данные без кавычек и с пустым столбцом, что соответствует вашим требованиям для последующего импорта.

Оцените материал
Добавить комментарий

Капча загружается...