带有变量的Get-ADUser过滤器失败

时间:2019-08-12 13:59:17

标签: powershell

我有一个SQL查询,该查询返回员工的主管电子邮件地址并将其存储在变量中。当我在Get-ADUser查询中使用该变量时,它什么也不返回。

我尝试在Get-ADUser查询中提供实际数据,并且可以正常工作 我试过将SQL查询返回的变量转换为字符串,也不会返回任何结果。

$SupvisorID="CFGFBT0000K0"
$QueryFmt3 = @"
Select  eepAddressEmail
 from empcomp
 join emppers on eeceeid = eepeeid
 join Location on EecMailstop = LocCode
 join company on eeccoid = cmpcoid
 join jobcode on jbcjobcode = eecjobcode
 join OrgLevel on EecOrgLvl2 = OrgCode
 Where eepEEID = '$SupvisorID'
"@

$SVEmail=Invoke-Sqlcmd   -ServerInstance $server -Database  $dbname -Query $QueryFmt3
$SVEmail

## This will not return any results
get-aduser -Filter "EmailAddress -like '$SVEmail'" | Select Name

#However, if I insert the actual value of the $SVEmail variable I get results
get-aduser -Filter "EmailAddress -eq 'RPolley@cc-md.org'" | Select Name

我很抱歉,如果我的帖子格式不正确。我以前从未在线寻求帮助。我的难题是如何获取Get-ADUser字符串以识别SQL查询返回的变量中包含的数据。

2 个答案:

答案 0 :(得分:2)

Invoke-Sqlcmd返回DataRow对象(如果查询返回多行,则返回DataRows数组)。 因此,您必须指定要使用返回行的哪个字段。尝试$SVEmail.eepAddressEmail

答案 1 :(得分:1)

从对象获取属性。由于您没有使用通配符,因此不妨使用“ -eq”。

$email = $SVEmail.eepAddressEmail
get-aduser -Filter "EmailAddress -eq '$email'"