Você pode usar oImportar-CSVCmdlet do PowerShell para ler o conteúdo de um arquivo CSV. Depois de carregar o conteúdo do arquivo CSV, você obtém um objeto do PowerShell no qual cada coluna do arquivo CSV é uma propriedade separada. Este artigo discute as especificidades da leitura de dados de arquivos CSV usando o cmdlet Import-CSV.
Arquivos CSV são usados para armazenar dados tabulares. Por exemplo, criamos uma planilha Excel simples contendo informações do usuário AD com a seguinte estrutura:ADlogin,Email,Phone,Department. Observe que a primeira linha da planilha contém os nomes das colunas. No PowerShell, estes estarão disponíveis como atributos de objeto na matriz.
Nossa tarefa é importar esse arquivo CSV para o PowerShell e fazer alterações no Active Directory para cada usuário do arquivo.
No artigo anterior, explicamos como usar o cmdlet Export-CSV para salvar objetos do PowerShell em um arquivo CSV.
Leia mais:Importe usuários AD de CSV com PowerShell

Salve este arquivo Excel como um arquivo CSV com valores separados por vírgula. O arquivo de texto resultante deve ficar assim:


Agora, para importar um arquivo CSV para o PowerShell, basta especificar seu nome (caminho):
$ADUsers=Import-CSV -path C:PSmy_ad_users.csv
O cmdlet Import-CSV converte dados de um arquivo CSV em uma matriz do PowerShell.
Se o arquivo CSV usar delimitadores diferentes de vírgulas, você poderá especificá-los com o-Delimitadorparâmetro. Por exemplo, para importar um arquivo CSV com um delimitador de ponto e vírgula (;) use o comando:
$ADUsers=Import-CSV -path C:PSmy_ad_users.csv -Delimiter ";"
Se você usar um caractere de tabulação como delimitador em CSV, poderá especificá-lo da seguinte maneira:-Delimiter `t
Se você quiser usar um delimitador padrão em seu sistema (dependendo do idioma e das configurações regionais do Windows), use o-UseCulturebandeira.
Execute este comando para obter o delimitador padrão do sistema no Windows:
(Get-Culture).TextInfo.ListSeparator
Agora, se você chamar a variável $ADUsers, ela exibirá o conteúdo do seu arquivo CSV. O cmdlet converte o conteúdo do arquivo em uma matriz. Todos os valores do arquivo CSV são representados como linhas.
Se o seu arquivo CSV contiver codificação de caracteres UTF-8, certifique-se de especificar também o tipo UTF8 para evitar erros de codificação:
Import-CSV -path C:PSmy_ad_users.csv -Encoding UTF8
A lista de propriedades de objetos disponíveis pode ser exibida da seguinte forma:
$ADUsers|get-member
Você pode ver que as linhas da matriz contêm PSCustomObjects, cujos elementos podem ser acessados pelos nomes das colunas do seu arquivo CSV.

Você pode exibir todos os valores de uma determinada coluna:
$ADusers.email
Ou os atributos do objeto especificados:
$ADusers| Select-Object Email, Phone


Outra opção útil é acessar diretamente um objeto específico no array. Por exemplo, execute o seguinte comando para obter o valor da linha 4 (a numeração começa em 0):
$ADusers[3]


Se você quiser alterar os atributos dos usuários do Active Directory especificados em seu arquivo CSV, basta usar o loop ForEach para iterar por todas as linhas na matriz $ADUsers (usaremos o cmdlet Set-ADUser do módulo AD PowerShell para fazer as alterações).
# Iterating over all the rows in the array one by one
$ADUsers | ForEach-Object {
# In this example, the $_. statement means we are accessing the current row of the array You can get the value of a particular column from the current row by accessing it by the column name. For example, to display the ADLogin value from the current line:
Write-host $_.ADLogin
# Now we search for a user in AD by the value of the ADLogin column and change its attribute values:
Set-ADUser -Identity $_.AdLogin -MobilePhone $_.Phone –Department $_.Department –EmailAddress $_.Email
}
Você pode substituir este script por um PowerShell one-liner mais compacto:
Import-Csv C:PSmy_ad_users.csv | foreach {Set-ADUser -Identity $_.AdLogin -MobilePhone $_.Phone –Department $_.Department –EmailAddress $_.Email}
Às vezes você pode achar o formato abaixo mais conveniente. Aqui acessamos a linha atual do array através do$Uservariável que definimos na instrução ForEach:
ForEach ($User in $ADUsers){
$samaccountname = $User.ADlogin
$email = $user.Email
Write-host $samaccountname
Write-host $email
}
Em alguns casos, ao processar elementos da matriz a partir de um arquivo CSV, pode ser necessário adicionar uma coluna extra à matriz. Por exemplo, se você quiser adicionar a data atual ao objeto $ADUsers:
$ADUsers | add-member -membertype NoteProperty -name Date -value (Get-Date -Format dd/MM/yyyy)


Aqui estão mais cenários em que você pode usar o cmdlet Import-CSV para executar operações administrativas em um grande número de objetos:
- Exporte as caixas de correio do Exchange para arquivos PST:
Import-CSV "C:psuser_to_export_pst.csv" | ForEach {New-MailboxExportRequest -Mailbox $_.username -FilePath $_.UNCPathtoPst - Adicione usuários a um grupo de segurança do AD com PowerShell: I
mport-CSV .users.csv -Header users | ForEach-Object {Add-AdGroupMember -Identity ‘TestADGroup’ -members $_.users}
Ou um caso semelhante de adição de usuários a um grupo Microsoft Entra ID (Azure AD):Import-CSV "C:PSadd_m365_members.csv" | ForEach-Object {
Add-UnifiedGroupLinks –Identity it_dept –LinkType Members –Links $_.member
} - Obtenha informações sobre o usuário do AD:
Import-Csv c:psusernsme_list.csv | ForEach {Ou use Set-ADUser para alterar os atributos de usuários específicos:
Get-ADUser -identity $_.user -Properties Name, telephoneNumber |
Select Name, telephoneNumber |
Export-CSV c:psexport_ad_list.csv -Append -Encoding UTF8
}Import-Csv "C:psmodifyad_users.csv" | foreach {Set-ADUser -Identity $_.SamAccountName –Title $_.Title -MobilePhone $_.MobilePhone}Atualize as fotos dos usuários no Active Directory:Import-Csv C:PSimport.csv |%{Set-ADUser -Identity $_.AD_username -Replace @{thumbnailPhoto=([byte[]](Get-Content $_.Photo -Encoding byte))}} - Crie usuários em massa no Active Directory a partir de uma lista em um arquivo CSV.













