当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 导入 CSV 分隔符 PowerShell

作者:精品下载站 日期:2024-12-14 18:11:04 浏览:12 分类:玩电脑

导入 CSV 分隔符 PowerShell


为什么我们需要在 PowerShell 中使用导入 CSV(逗号分隔值)分隔符?默认情况下,PowerShell 使用逗号作为分隔符。您在 CSV 文件中使用的分隔符与逗号不同吗?如果是,则需要使用 PowerShell 中的分隔符参数。在本文中,您将了解如何在 PowerShell 中使用 Import-Csv 分隔符。

信息

CSV 文件是与 PowerShell 的完美组合。 Import-Csv cmdlet 从 CSV 文件中的项目创建类似表格的自定义对象。 CSV 文件中的每一列都成为自定义对象的属性,行中的项目成为属性值。 Import-Csv 适用于任何 CSV 文件,包括由 Export-Csv cmdlet 生成的文件。

我们喜欢运行 PowerShell 脚本来使用 PowerShell 从 CSV 创建 Active Directory 用户。运行脚本后,出现错误。

PS C:\Scripts> .\Add-NewUsers.ps1
Get-ADUser : Variable: 'Username' found in expression: $Username is not defined.
At C:\scripts\Add-NewUsers.ps1:31 char:6
+     if (Get-ADUser -F {SamAccountName -eq $Username})
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Get-ADUser], ArgumentException

为什么会发生这种情况?

一些欧洲电子表格程序使用分号而不是逗号来分隔(定界)CSV 文件中的数据字段。它可能会导致 CSV 导入出现问题。

分隔字符:

  • 分号:;

  • 逗号:,

在 PowerShell 中检查 Import-Csv cmdlet

下载 NewUsersFinal.csv 并将其放置在 C:\Temp\ 文件夹中。使用 Import-Csv cmdlet。如果您在 PowerShell 中看不到这些列,则意味着它无法正确读取 CSV 文件。

PS C:\> Import-Csv "C:\Temp\NewUsersFinal.csv" | Format-Table

FirstName;Initials;Lastname;Username;Email;StreetAddress;City;ZipCode;State;Country;Department;Password;Telephone;JobTitle;Company;OU                
-------------------------------------------------------------------------------------------------------------------------------------                
Max;MF;Fraser;Max.Fraser;[email protected];21 Baker St;London;NW1 6XE;;United Kingdom;IT;Q+/7_]Tc;44123456780;Engineer;EXOIP;OU=IT                
Piers;PB;Bower;Piers.Bower;[email protected];21 Baker St;London;NW1 6XE;;United Kingdom;IT;RW-cn3N);44123456781;Manager;EXOIP;OU=IT              
Kylie;KD;Davidson;Kylie.Davidson;[email protected];21 Baker St;London;NW1 6XE;;United Kingdom;IT;3VKr2.Wm;44123456782;Engineer;EXOIP;OU=IT    
Richard;RG;Grant;Richard.Grant;[email protected];21 Baker St;London;NW1 6XE;;United Kingdom;IT;)N3ZYJvS;44123456783;Teamleader;EXOIP;OU=IT     
Boris;BC;Campbell;Boris.Campbell;[email protected];21 Baker St;London;NW1 6XE;;United Kingdom;IT;9ZesQ]pq;44123456784;Engineer;EXOIP;OU=IT    
Nicholas;NM;Murray;Nicholas.Murray;[email protected];21 Baker St;London;NW1 6XE;;United Kingdom;IT;KX*rB72p;44123456785;Manager;EXOIP;OU=IT  
Leonard;LC;Clark;Leonard.Clark;[email protected];21 Baker St;London;NW1 6XE;;United Kingdom;IT;AJ+(}c3$;44123456786;Engineer;EXOIP;OU=IT       
Ruth;RD;Dickens;Ruth.Dickens;[email protected];21 Baker St;London;NW1 6XE;;United Kingdom;IT;Jgv4{Bb$;44123456787;Engineer;EXOIP;OU=IT          
Jonathan;JF;Fisher;Jonathan.Fisher;[email protected];21 Baker St;London;NW1 6XE;;United Kingdom;IT;u*PQJAx5;44123456788;Engineer;EXOIP;OU=IT
Grace;GR;Rees;Grace.Rees;[email protected];21 Baker St;London;NW1 6XE;;United Kingdom;IT;w([6p&Kt;44123456789;Engineer;EXOIP;OU=IT

如果您在输出中看不到所有信息,请使用 Out-GridView cmdlet。

PS C:\> Import-Csv "C:\Temp\NewUsersFinal.csv" | Out-GridView

它将显示如下屏幕。

[玩转系统] 导入 CSV 分隔符 PowerShell

将分隔符参数 -Delimiter “;” 添加到 Import-Csv cmdlet。

PS C:\> Import-Csv "C:\Temp\NewUsersFinal.csv" -Delimiter ";" | Format-Table

FirstName Initials Lastname Username        Email                      StreetAddress City   ZipCode State Country       
--------- -------- -------- --------        -----                      ------------- ----   ------- ----- -------       
Max       MF       Fraser   Max.Fraser      [email protected]       21 Baker St   London NW1 6XE       United Kingdom
Piers     PB       Bower    Piers.Bower     [email protected]      21 Baker St   London NW1 6XE       United Kingdom
Kylie     KD       Davidson Kylie.Davidson  [email protected]   21 Baker St   London NW1 6XE       United Kingdom
Richard   RG       Grant    Richard.Grant   [email protected]    21 Baker St   London NW1 6XE       United Kingdom
Boris     BC       Campbell Boris.Campbell  [email protected]   21 Baker St   London NW1 6XE       United Kingdom
Nicholas  NM       Murray   Nicholas.Murray [email protected]  21 Baker St   London NW1 6XE       United Kingdom
Leonard   LC       Clark    Leonard.Clark   [email protected]    21 Baker St   London NW1 6XE       United Kingdom
Ruth      RD       Dickens  Ruth.Dickens    [email protected]     21 Baker St   London NW1 6XE       United Kingdom
Jonathan  JF       Fisher   Jonathan.Fisher [email protected] 21 Baker St   London NW1 6XE       United Kingdom
Grace     GR       Rees     Grace.Rees      [email protected]       21 Baker St   London NW1 6XE       United Kingdom

再次,这次使用 Out-GridView cmdlet。

[玩转系统] 导入 CSV 分隔符 PowerShell

将分隔符参数添加到 Import-Csv cmdlet

如上一步所示,CSV 文件获得了字符分号。我们必须将分隔符参数 -Delimiter “;” 添加到 Import-Csv cmdlet。

之前

$ADUsers = Import-csv "C:\scripts\NewUsersFinal.csv"

之后

$ADUsers = Import-csv "C:\scripts\NewUsersFinal.csv" -Delimiter ";"

运行脚本,它将按预期工作。这对你有帮助吗?

继续阅读:在 Exchange 中将邮箱列表导出为 CSV »

结论

在本文中,您学习了如何使用 PowerShell 导入 CSV 分隔符。检查您的 CSV 文件并使用分隔符参数调整 Import-Csv cmdlet。在运行脚本之前在 PowerShell 中导入 CSV 总是好的。这样,您就知道 CSV 文件是否可读!

您喜欢这篇文章吗?如果是这样,您可能会喜欢 Exchange Server 中无法识别 New-MailboxExportRequest 这篇文章。不要忘记关注我们并分享这篇文章。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯