【发布时间】:2020-06-10 18:37:50
【问题描述】:
我需要将一个列表与另一个列表进行比较,并为在 AD 中找到的每个员工 ID 创建第三个列表,而不是在 SQL 中。我有两个命令可以从每个命令中提取数据。我正在努力创建一个命令,它将以某种方式组合这些来做我想做的事情。
一个连接到 SQL 数据库并从那里拉出所有当前员工。
$sqlpeeps = Invoke-Sqlcmd -ServerInstance '192.168.1.1' -Database 'DATABASE'
-Query "SELECT * FROM [COMPANY].[dbo].[employee] WHERE EmployeeStatus in
('A', 'S', 'L')"
另一个命令是获取我们所有的活动 AD 帐户。
$adpeeps = get-aduser -filter * -searchbase
"OU=Users,OU=Logins,DC=COMPANY,DC=COM" -properties *
我认为我需要的是某种 foreach 循环,但我似乎找不到用 powershell 说“不在”的方法,所以我在编写它时遇到了麻烦。
$adpeeps | foreach ($_.EmployeeID in $sqlpeeps) <do nothing?> else {out-file
"C:\users\user\Desktop\here.txt"}
如果它可以帮助我更轻松地解决此问题,那么 SQL 数据中有一个名为 FILE# 的列与 AD 属性 EmployeeID 直接相关。有没有一种简单的方法可以删除所有无关的数据,所以我只使用这两列进行比较?
理想情况下,脚本需要找到从我们的 SQL 表中删除的 AD 帐户 - 换句话说,要手动删除的列表。
【问题讨论】:
-
!(object -in object)我建议使用for循环,这样您就可以像for($i=0; $i -lt $sqlpeeps.length; $i+=3){do stuff}那样更轻松地完成三分之一
标签: powershell