Где оператор в цикле foreach, сравнивая даты - PullRequest
0 голосов
/ 29 января 2019

Попытка импортировать список пользователей с именем, электронной почтой, датой прекращения, датой окончания и первой проверкой, прошли ли либо дату окончания, либо дату завершения.

Попытка добавления [datetime] и использования get-date $Пользователь. 'Дата окончания', но без везения.Кажется, что он работает с приведенным ниже кодом без тех же проблем, или я получаю ту же ошибку, но он проверяет и записывает, что одно из значений больше:

$StopFolder = Get-ChildItem C:\test\123\*.csv |sort LastWriteTime -descending|select -first 1
$Stoplist = Import-Csv $StopFolder -delimiter ';'

$CurrentDate = Get-Date
foreach($Date in $Stoplist){
if($CurrentDate -eq (get-date $Date.'Stop Date')){write-host Equal}

if($CurrentDate -gt (get-date $Date.'Stop Date')){write-host Greater}

if($CurrentDate -lt (get-date $Date.'Stop Date')){write-host Less}}

Но то же самое не сделалКажется, что это работает для ниже и не может понять, почему.Я думаю, что мне нужно преобразовать его в дату, но я не уверен, почему он работает в вышеприведенном, а не ниже, и как именно его конвертировать, если get-date не работает.

$StopFolder = Get-ChildItem C:\test\123\*.csv |sort LastWriteTime -descending|select -first 1
$Stoplist = Import-Csv $StopFolder -delimiter ';'
$CurrentDate = Get-Date

foreach($User in $Stoplist|where($_.'stop date' -lt $CurrentDate)){

try{
    $Usermail = $User.'e-mail address'
    $Username = get-aduser -Filter "EmailAddress -eq '$Usermail'" -properties Enabled


        if($Username.enabled){
        echo $Username 'still exists and is NOT disabled' >> C:\NotDisabled.txt
        }

        if($Username.enabled -eq $false){
        echo $Username 'still exists and is disabled' >> C:\NotDeleted.txt 
        }
}
catch{continue}
}

ОжидаетсяВ результате цикл запускается только в том случае, если текущая дата остановки пользователя меньше текущей даты.В настоящее время ничего не происходит, удаление части where и остальных, кажется, работает нормально.

Любая помощь очень ценится.

Редактировать: даты CSV выглядят следующим образом:

дата окончания

01-02-2023
21-09-2019
21-01-2019
01-01-2019
01-01-2019

1 Ответ

0 голосов
/ 29 января 2019

Редактировать:
Ошибка была не только в логике, но и в опечатке: | where нужны фигурные скобки> | where {}, а не скобки.


Создать дату из 'stop date':

(get-date -date $_.'stop date')

в одну строку:

foreach($User in $Stoplist|where{(get-date -date $_.'stop date') -lt $CurrentDate}){...}

Здесь $Stoplist|where{(get-date -date $_.'stop date') -lt $CurrentDate} - это одна единица и может быть заключена в капсулув скобках:

foreach($User in ($Stoplist|where{(get-date -date $_.'stop date') -lt $CurrentDate}) ){...}

Но без скобок вокруг $User in $Stoplist труба | относится только к последнему объекту $Stoplist

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...