空(空)PowerShell变量

时间:2018-06-27 14:23:38

标签: powershell variables null active-directory

我正在为我的雇主编写一个脚本,该脚本会将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

1 个答案:

答案 0 :(得分:1)

问题似乎可能是$ employee变量末尾的通配符。

  

$ employee = Get-ADUser-筛选{EmployeeID -eq $ ID}-属性(*)

我觉得这就是为什么您的变量为null的原因。 (即,您可能必须定义要查找的属性,因为通配符可能会尝试提取所有属性。)

**编辑:或者,您可以尝试从

将('')放在EmployeeID数据搜索周围
  

$ employee = Get-ADUser-过滤器{EmployeeID -eq $ ID}-属性*

  

$ employee = Get-ADUser -Filter {'EmployeeID'-eq $ ID}-属性*

希望这有助于您朝正确的方向前进!