使用PowerShell从CSV文件

时间:2016-09-01 12:42:14

标签: powershell active-directory

我正在使用PowerShell脚本向AD中的所有用户添加一些信息。出于某种原因,如果用户的名字中有撇号(例如Tim O'Reilly),我会不断收到错误消息。

如何格式化脚本以使其包含带撇号的名称?

我的剧本:

# Import AD Module
Import-Module ActiveDirectory

write-Host 'Starting to update AD Attributes.......' -NoNewline -ForegroundColor Yellow
# Import CSV into variable $users

$users = Import-Csv -Path C:\Scripts\users.csv

# Loop through CSV and update users if the exist in CVS file

foreach ($user in $users) {
#Search in specified OU and Update existing attributes
Get-ADUser -Filter "displayName -eq '$($user.Name)'" -Properties * -SearchBase "DC=My,DC=domain,DC=com" |
Set-ADUser -Company $($user.Email)
}

Write-Host 'done!' -ForegroundColor Green

这是我收到的错误消息:

  

Get-ADUser:解析查询时出错:'displayName -eq'Tim O'Reilly''   错误消息:位置处的'语法错误':'29'。在   C:\ Scripts \ Update-information \ Update-Users-2.ps1:13 char:1   + Get-ADUser -Filter“displayName -eq'$($ user.Name)'” - 属性* -S ...   + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~       + CategoryInfo:ParserError:(:) [Get-ADUser],ADFilterParsingException       + FullyQualifiedErrorId:ActiveDirectoryCmdlet:Microsoft.ActiveDirectory.Management.ADFilterParsingException,Micr   osoft.ActiveDirectory.Management.Commands.GetADUser

我真的很感激我能得到的任何帮助。

谢谢,

1 个答案:

答案 0 :(得分:1)

您可以在csv文件中使用一些自定义分隔符,而不是修改脚本。只需将数据与“:”(Tim:O'Reilly)之类的自定义字符分开,并为import-csv cmdlet添加分隔符开关,例如

$users = Import-Csv -Path C:\Scripts\users.csv -Delimiter :