Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Проверка остатка дней до закрытия учетной записи (http://forum.oszone.net/showthread.php?t=333711)

flamebornet 13-03-2018 16:37 2803092

Проверка остатка дней до закрытия учетной записи
 
всем привет! не могу сообразить, как вывести учетки, у которых AccountExpirationDate заканчивается через 3 дня. То есть, за 3 дня до закрытия уз должно быть уведомления. Не могу сообразить как сделать выборку
get-aduser -SearchBase "...." -filter * -properties AccountExpirationDate | where {($today - ($_.AccountExpirationDate)) -eq '3' } | select samaccountname

где today - $today=Get-date

как правильно это сформулировать для поша?

Molchune 13-03-2018 17:13 2803099

Наверное как то так.
Код:

$today= (Get-Date).AddDays(+3)
get-aduser  -filter * -properties AccountExpirationDate  | Select-Object samaccountname, AccountExpirationDate | where {($_.AccountExpirationDate) -match $today.Date }

Единственный ньюанс, при дате AccountExpirationDate например сегодня, в свойствах, стоит дата будущего дня.
Ну то есть если в свойствах пользователя поставили дату 13 марта, то AccountExpirationDate будет 14 марта, имейте это ввиду. Если надо предупреждать з атри дня, то надо делать так
Код:

$today= (Get-Date).AddDays(+4)

flamebornet 13-03-2018 17:31 2803105

Цитата:

Цитата Molchune
Наверное как то так. »

благодарю, а конструкция -match $today.Date что означает?

тут получается, что он выбирает , где $_.AccountExpirationDate содержит сегодняшнюю дату +4 дня вперед?

к примеру, есть testuser1 с датой 13 марта 2018
но скрипт его не выгружает


напрмиер, where {($_.AccountExpirationDate -eq (Get-date).adddays(-3) ) } по идее бы должно работать, здесь дата истекания равно дата сегодня -3 дня. но оно сравнивает видимо еще по веремени. а время у дат закрытия 00,00

flamebornet 14-03-2018 08:52 2803232

о, все! ставил дату не верно хD
если кому еще интересно - вот еще вариант
cls

Get-Variable | Remove-Variable -Confirm:0 -ErrorAction SilentlyContinue
$now = Get-Date

$users = Get-ADUser -SearchBase "..." -filter {(name -like "*") -and (Enabled -eq $true)} -Properties AccountExpirationDate,Enabled
$users | % {
$AED = $_.AccountExpirationDate
$diffD = $AED - $now
$raz = $diffD.Days
$SAM = $_.SamAccountName
If ($raz -eq 3){
$SAM
}
}


Время: 16:53.

Время: 16:53.
© OSzone.net 2001-