Что я пытаюсь сделать:
Возвращать список пользователей AD, отфильтрованных по дате, сохраненной в атрибуте AD, с помощью PowerShell.
Проблема
Дата, по которой я хочу фильтровать, хранится в атрибуте AD со строковым типом данных, в частности extensionAttribute12
.Это не подлежит обсуждению с людьми, для которых я пишу сценарий.
У меня проблемы с получением правильного синтаксиса в моем фильтре для приведения этой строки к дате до сравнения.
Вот мой нерабочий код:
Import-Module ActiveDirectory
$CurrentDate = Get-Date
$CurrentDate = $CurrentDate.ToString('MM-dd-yyyy')
$OU = "OU=PIV_Users,OU=FakeOU,DC=fake,DC=com"
$30Days = (Get-Date).AddDays(-30)
Get-ADUser -SearchBase $OU -SearchScope OneLevel -Filter {(extensionAttribute12 -notlike "*" -or extensionAttribute12 -le $30days) -and (enabled -eq $true) -and (whencreated -lt $30Days)} -Properties * |
Select-Object Name, samAccountName, extensionAttribute12, whenCreated, enabled, employeeType
Это ошибка:
Get-ADUser: недопустимый тип 'Система.DateTime '.
Имя параметра: extensionAttribute12
В строке: 9 символов: 1
Я попытался добавить приведение следующим образом
... -or **[DateTime]extensionAttribute12** -le $30days) ...
, который дал мне этоошибка:
Get-ADUser: Ошибка разбора запроса: '(extensionAttribute12 -не похоже "*" -или [DateTime] extensionAttribute12 -le $ 30days) -and (enabled -eq $ true) -and (whencreated -lt $ 30Days) '
Сообщение об ошибке:' синтаксическая ошибка 'в позиции:' 40 '.
В строке: 9 символов: 1