Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PS查询用户列表的SQL,然后禁用Active Directory帐户?_Sql_Powershell_Active Directory - Fatal编程技术网

使用PS查询用户列表的SQL,然后禁用Active Directory帐户?

使用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 [

我试图使用Powershell查询SQL数据库中的挂起用户列表,将其导入变量,然后使用该变量循环并禁用这些AD帐户。这是我用的代码。。。请注意,我现在只是尝试编写输出,而不是进行更改,所以我不会做任何后悔的事情

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表进行比较,以根据它们的状态(从其他地方提取)找到应该禁用的帐户。