正在尝试使sql查询在PowerShell中工作
我正在尝试从数据库中提取信息,并与AD用户进行比较,但似乎无法获得正确的语法 我正在提取A.D.中EmployeeID不为null的所有用户(仅限于EmployeeID本身),然后转换为字符串:正在尝试使sql查询在PowerShell中工作,sql,powershell,Sql,Powershell,我正在尝试从数据库中提取信息,并与AD用户进行比较,但似乎无法获得正确的语法 我正在提取A.D.中EmployeeID不为null的所有用户(仅限于EmployeeID本身),然后转换为字符串: $aUsers = (Get-ADUser -LDAPFilter "(employeeID=*)" -Properties EmployeeID).EmployeeID $b = ($aUsers -join ",") 然后,我尝试在表中查询数据库中没有对应a
$aUsers = (Get-ADUser -LDAPFilter "(employeeID=*)" -Properties EmployeeID).EmployeeID
$b = ($aUsers -join ",")
然后,我尝试在表中查询数据库中没有对应a.D.中EmployeeID的任何用户:
"Select * from PS_WR_EE_CWR_CACHE Where EMPLID NOT IN (" + $b + ")"
但这会导致错误“靠近','的语法不正确”。但是,如果我手动执行某些操作,例如:
Select * from PS_WR_EE_CWR_CACHE Where EMPLID NOT IN (110, 111, 118)
它工作得很好。我不确定语法中有什么地方出错了,它不会接受列表。
“从PS_WR_EE_CWR_缓存中选择*,其中EMPLID不在({0}')”-f($aUsers-join“,”)
我认为@SantiagoSquarzon的意思是,数据库中的EMPLID可能是CHAR类型,而不是INT,因此需要在每个值周围加上单引号。例如,('110','111','118'))
因此,顺便说一句,如果您试图查找所有没有employeeID的用户,为什么不直接询问AD,即使比SQL慢,也可以节省一步。Get ADUser-LDAPFilter”(!employeeID=*)“
谢谢你们,这很有帮助。对于你的问题,@SantiagoSquarzon,数据库中约有6000个用户不在公元前,这就是我试图返回的。因此,我从a.D.做了一个拉取操作,就像你做的一样,只拉取EmployeeID,然后运行查询来拉取数据库中不在EmployeeID列表中的任何用户。这一点很好,很高兴它起了作用:)@JLogan3o13