我正在为我的雇主编写一个脚本,该脚本会将Active Directory中的内容与所用其他软件的CSV文件进行比较。 Active Directory应该与CSV文件匹配。我遇到的问题是$ emplyee变量总是空着(空):
$ employee = Get-ADuser -Filter {EmployeeID -like“ $ ID”}-属性*
$ employee变量是Active Directory帐户,应该与foreach循环中的当前$ user进行比较。使用VS Code中的调试器进行故障排除时,我发现$ employee变量为空,因此脚本无法比较这两个对象。下面是我正在使用的代码:
$users = Import-Csv C:\Users\Administrator\Desktop\June18Report_2.csv
foreach ($user in $users) {
$ID = $user.'Employee ID'
$employee = Get-ADUser -Filter {EmployeeID -eq $ID} -Properties *
$lastname = $user.'Last Name'
$samaccountname = $employee.SamAccountName
if ($lastname -ne $employee.surname) {
Write-Host "The last name was changed for $samaccountname" -ForegroundColor Red
get-aduser -Identity $employee.SamAccountName | Set-ADUser -Surname $lastname
} Else {
Write-Host "The last name is correct for $samaccountname" -ForegroundColor Green
}
对于此问题的任何帮助或提示,将不胜感激!
谢谢! -leah_cyberpadawan
答案 0 :(得分:1)
问题似乎可能是$ employee变量末尾的通配符。
$ employee = Get-ADUser-筛选{EmployeeID -eq $ ID}-属性(*)
我觉得这就是为什么您的变量为null的原因。 (即,您可能必须定义要查找的属性,因为通配符可能会尝试提取所有属性。)
**编辑:或者,您可以尝试从
将('')放在EmployeeID数据搜索周围$ employee = Get-ADUser-过滤器{EmployeeID -eq $ ID}-属性*
到
$ employee = Get-ADUser -Filter {'EmployeeID'-eq $ ID}-属性*
希望这有助于您朝正确的方向前进!