使用PS查询用户列表的SQL,然后禁用Active Directory帐户?
我试图使用Powershell查询SQL数据库中的挂起用户列表,将其导入变量,然后使用该变量循环并禁用这些AD帐户。这是我用的代码。。。请注意,我现在只是尝试编写输出,而不是进行更改,所以我不会做任何后悔的事情使用PS查询用户列表的SQL,然后禁用Active Directory帐户?,sql,powershell,active-directory,Sql,Powershell,Active Directory,我试图使用Powershell查询SQL数据库中的挂起用户列表,将其导入变量,然后使用该变量循环并禁用这些AD帐户。这是我用的代码。。。请注意,我现在只是尝试编写输出,而不是进行更改,所以我不会做任何后悔的事情 Import-Module ActiveDirectory $Users = Invoke-Sqlcmd -ServerInstance 'SERVER' -Database 'NAME' -Query "SELECT EmployeeID, EmployeeStatus FROM [
Import-Module ActiveDirectory
$Users = Invoke-Sqlcmd -ServerInstance 'SERVER' -Database 'NAME' -Query "SELECT EmployeeID,
EmployeeStatus FROM [NAME].[dbo].[employee] WHERE EmployeeStatus = 'S'"
foreach ($user in $users)
{
Get-ADUser -Filter "EmployeeID -eq '$($user.EmployeeID)'" `
-SearchBase "OU=Logins,DC=domain,DC=com" |
#Set-ADUser -Identity $Name -Enabled $False
Write-Verbose $User
}
SQL查询工作正常,但当我运行循环时,它会出现以下错误:
写入详细信息:无法将输入对象绑定到的任何参数
该命令可能是因为
命令不接受管道输入,或者输入及其属性与接受管道的任何参数都不匹配
输入
我只是格式化不正确吗?或者我还有别的想法吗
提前谢谢 如果要在Active Directory中查找非活动用户帐户,可以使用
Search-ADAccount cmdlet
。您需要将“-AccountInActive”
参数与搜索帐户一起使用来执行此操作
下面是PowerShell命令:
Search-ADAccount –AccountInActive –TimeSpan 120:00:00:00 –ResultPageSize 2000 –ResultSetSize $null | ?{$_.Enabled –eq $True} | Select-Object Name, SamAccountName, DistinguishedName | Export-CSV “C:\Temp\InActiveADUsers.CSV” –NoTypeInformation
我已经给出了120天的时间跨度,并将列表导出到csv文件。Set ADUser
被注释掉Write Verbose
正在获取管道输入,但无法将其绑定到-Message
,因为$user
已按位置绑定到管道输入。另一个问题是输送到Set ADUser
的值绑定到-Identity
参数。但是,您正在手动向-Identity
提供一个值,同时希望通过管道将数据传输到该值。这是一个矛盾。你应该选一个或另一个。谢谢,那些改变帮了我。谢谢,但我现在不是这样做的。我将AD帐户与SQL表进行比较,以根据它们的状态(从其他地方提取)找到应该禁用的帐户。