Windows 使用Get ADUser和Import Csv进行未来扩展,以使用Set ADUser更新用户
在这个项目的最后,我试图使用一个CSV文件来更新广告中的用户个人信息。我计划使用GetAduser管道将ADUser传输到SetAduser 我当前的问题是使用Get ADUser从广告中返回用户记录 我的CSV文件如下Windows 使用Get ADUser和Import Csv进行未来扩展,以使用Set ADUser更新用户,windows,powershell,csv,Windows,Powershell,Csv,在这个项目的最后,我试图使用一个CSV文件来更新广告中的用户个人信息。我计划使用GetAduser管道将ADUser传输到SetAduser 我当前的问题是使用Get ADUser从广告中返回用户记录 我的CSV文件如下 FirstName,LastName,DisplayName,CompanyName,EmailAddress John,Doe,John Doe,Test Company,john.doe@company.com Jane,Doe,Jane Doe,Test Company,
FirstName,LastName,DisplayName,CompanyName,EmailAddress
John,Doe,John Doe,Test Company,john.doe@company.com
Jane,Doe,Jane Doe,Test Company,jane.doe@company.com
我的PowerShell脚本如下所示
Import-Csv .\Users.csv | ForEach {
Write-Host $_.EmailAddress
Write-Host $_.DisplayName
"`"$($_.EmailAddress)`""
Get-ADUser -Filter { userPrincipalName -eq "`"$($_.EmailAddress)`""}
}
返回的是
john.doe@company.com
John Doe
"john.doe@company.com"
jane.doe@company.com
Jane Doe
"jane.doe@company.com"
在不使用如下变量的情况下运行Get ADUser,会返回用户帐户,而上面的代码不会
Get-ADUser -Filter { userPrincipalName -eq "john.doe@company.com"}
哪里出错了?美元是cmd let返回的管线或当前对象中当前值的变量。在Get ADUser中使用$时,它将是Get ADUser cmd let返回的对象。只需创建一个变量并在foreach循环中分配$\ EmailAddress,然后将此变量传递给筛选器
Import-Csv .\Users.csv | ForEach {
$emailAddress = $_.EmailAddress
Write-Host $_.EmailAddress
Write-Host $_.DisplayName
Get-ADUser -Filter { userPrincipalName -eq $emailAddress }
}
我确实在某个阶段尝试过。我再试了一次,但Get ADUser仍然没有返回任何结果。如果执行此操作,会发生什么情况:导入Csv。\Users.Csv | ForEach{$emailAddress=$\ emailAddress Write Host$\ emailAddress Write Host$\显示名称Get ADUser | where对象{$\ userPrincipalName-eq$emailAddress}