![](/img/trans.png)
[英]Powershell - Active Directory - filter PasswordLastSet by today
[英]Active Directory PowerShell Filter
我在使用AD模块的Powershell中的脚本遇到问题。
我知道关于AD命令如何接收其查询的一般经验法则,所以我已经将此脚本编写为(我认为)会符合那些准则。
$CSV=Import-Csv "c:\temp\deleteduserlist.csv"
foreach ($entry in $CSV)
{
$filter = "{SamAccountName -like ""$($entry.username)""}"
Get-ADObject -filter $filter
}
我基本上需要能够查询和恢复已删除的任何用户,但是失败并显示:
错误消息:位置“ 1”处出现“语法错误”
最初,我通过单引号通过过滤器进行发送,如下所示:
{SamAccountName -like'xxx'“}
但是,我现在已解决此问题。
让我感到困惑的一件事是,我可以从字面上显示$ filter的结果,然后将它们手动复制到Get-ADObject -Filter(粘贴),并且可以正常工作。 因此,我不明白为什么Powershell不喜欢它。
整个错误:
Get-ADObject:分析查询时出错:'{SamAccountName -like“ xxxx”}'错误消息:'1'处的'语法错误'。 在C:\\ temp \\ GetDeleted.ps1:5 char:14 + Get-ADObject <<<< -filter $ filter + CategoryInfo:ParserError:(:) [Get-ADObject],ADFilterParsing Exception + FullyQualifiedErrorId:错误解析查询:' {SamAccountName -like“ xxx”}'错误消息:位置“ 1”上的“语法错误”。,Microsoft.ActiveD irectory.Management.Commands.GetADObject
一种方法是
$CSV=Import-Csv "c:\temp\deleteduserlist.csv"
foreach ($entry in $CSV) {
## Set username to entry from csv file
$directory_username = $entry.username
## Build search filter before using it, interested in username and deleted objects
$directory_filter = {(SamAccountName -like $directory_username) -and (Deleted -eq $true)}
## Search for ADObject based on filter and deleted objects explicitely included in the search
$directory_found_object = Get-ADObject -Filter $directory_filter -IncludeDeletedObjects -Properties sAMAccountName, Deleted
foreach ($directory_object in $directory_found_object) {
### Execute required action on each found $directory_object
### Perhaps pipe $directory_object | Restore-ADObject with appropriate attribute values for restore
}
}
当然可以修改$ directory_filter以更好地满足您的需求。 但是,您仍将面临的一个挑战是确定应还原给定sAMAccountName的找到的对象中的哪个。 这是因为任何给定的对象都可以多次处于删除状态。 解决该问题的一种方法可能是使用最新的WhenCreated属性值还原对象。
另外,我不确定您必须事先建立过滤器的动机。 如果您动态构建不同的属性值,这可能会很有用,但在您的示例中似乎并非如此。 因此,为简单起见,也可以将其删除并直接包含在这样的Get-ADObject调用中
$directory_found_object = Get-ADObject -Filter {(SamAccountName -like $directory_username) -and (Deleted -eq $true)} -IncludeDeletedObjects -Properties sAMAccountName, Deleted
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.