Пользовательский логон -Экспорт

#azure #powershell #active-directory #azure-active-directory

#azure #powershell #active-directory #azure-active-directory

Вопрос:

Привет, я пытаюсь экспортировать список пользователей AD на основе «Последнего входа в систему»
, который я написал с помощью базового powershell, однако мне было бы интересно, сможет ли кто-нибудь найти решение с помощью команд «AzureAD to Powershell».

Я дошел до получения списка, однако я не могу экспортировать его в любой тип файла из-за того, как он генерируется в цикле. Конечный результат, который я ищу, — это возможность упорядочить данные, чтобы увидеть, какие пользователи были неактивны?

 Import-Module ActiveDirectory

function Get-ADUserLastLogon([string]$userName) {

    $dcs = Get-ADDomainController -Filter {Name -like "*"}
    $time = 0
    foreach($dc in $dcs) { 
        $hostname = $dc.HostName
        $user = Get-ADUser $userName | Get-ADObject -Properties lastLogon 
        if($user.LastLogon -gt $time) {
            $time = $user.LastLogon
        }
        
    }
    
    $dt = [DateTime]::FromFileTime($time)
    Write-Host $username "last logged on at:" $dt
}

$unames = Get-ADUser -Filter 'ObjectClass -eq "User"' | Select -Expand SamAccountName 
foreach ($uname in $unames) { Get-ADUserLastLogon($uname); } 
 

Комментарии:

1. Как дела? Ваша проблема решена?

Ответ №1:

В Azure AD мы можем получить все записи о входе пользователей на портале Azure или с помощью Azure AD PowerShell. Если вы ищете способ с помощью PowerShell экспортировать список последних пользователей Azure AD для входа в систему со статусом учетной записи пользователя (включен или нет), просто попробуйте следующий код:

 Connect-AzureAD

$AllUsers =  Get-AzureADUser -All $true
$AllSiginLogs = Get-AzureADAuditSignInLogs -All $true

$results = @()
foreach($user in $AllUsers){

    $LoginRecord = $AllSiginLogs | Where-Object{ $_.UserId -eq $user.ObjectId  } | Sort-Object CreatedDateTime -Descending
    if($LoginRecord.Count -gt 0){
        $lastLogin = $LoginRecord[0].CreatedDateTime
    }else{
        $lastLogin = 'no login record'
    }
    $item = @{
        userUPN=$user.UserPrincipalName
        userDisplayName = $user.DisplayName
        lastLogin = $lastLogin
        accountEnabled = $user.AccountEnabled
    }
    $results  = New-Object PSObject -Property $item  
    
}
$results | export-csv -Path d:result.csv -NoTypeInformation
 

результат экспорта в файл .csv:
введите описание изображения здесь

Вам следует знать одну вещь: для разных уровней службы Azure AD время хранения этих данных в Azure AD разное, подробности см. Здесь .