PowerShell ile AD'den Bir SharePoint Kullanıcısının Son Giriş Zamanını Bulma


Gereksinim: Etkin olmayan kullanıcıları bulmak için gruptaki tüm SharePoint kullanıcılarının son oturum açma zamanını bulun.

Çözüm: PowerShell kullanarak kullanıcının son oturum açma zamanını Active Directory'den (kimlik doğrulama sağlayıcısı AD ise) alabiliriz. Bu blog yazısında size bir SharePoint kullanıcısının son oturum açma zamanını nasıl bulacağınızı göstereceğiz.


Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue
Import-Module ActiveDirectory

$UserAccount="vani"
$User = Get-ADUser -Filter {SamAccountName -like $UserAccount} | Get-ADObject -Properties lastLogon 
  
$LogonTime=[DateTime]::FromFileTime($User.LastLogon)
Write-host $LogonTime

Biraz daha hata işleme ekleyelim ve tüm SharePoint kullanıcılarının son oturum açma zamanını bulalım.

SharePoint kullanıcısının son oturum açma zamanını bulmak için PowerShell Komut Dosyası:

Tüm kullanıcıların son giriş zamanını öğrenmek için SharePoint ve Active Directory PowerShell modüllerinin kombinasyonunu kullanalım.


Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue
Import-Module ActiveDirectory

#Custom Function Get the Last Logon Time of the User from AD 
Function Get-ADUserLastLoginTime($UserAccount)
{
    Try {
        #Set the Error Action
        $ErrorActionPreference = "Stop"

        $User = Get-ADUser -Filter {SamAccountName -like $UserAccount} | Get-ADObject -Properties lastLogon 
  
           if($user.LastLogon) 
           {
               return([DateTime]::FromFileTime($User.LastLogon))
           }
           else
           {
             return "Not Found!"
           }
        }
    catch {
          Write-Host $_.Exception.Message -ForegroundColor Red
        }
    finally {
          #Reset the Error Action to Default
          $ErrorActionPreference = "Continue"
        }
}
#Get All User Profiles
$SiteURL="https://intranet.crescent.com"
$ServiceContext  = Get-SPServiceContext -site $SiteURL
$UserProfileManager = New-Object Microsoft.Office.Server.UserProfiles.UserProfileManager($ServiceContext)
#Get All User Profiles
$UserProfilesColl = $UserProfileManager.GetEnumerator()

Foreach($UserProfile in $UserProfilesColl)
{
    $UserAccount=$UserProfile["UserName"]
    $LogonTime = Get-ADUserLastLoginTime -UserAccount $UserAccount
    Write-host "Last Logon Time of the User $UserAccount is $LogonTime"
}

SharePoint'in Son Oturum Açma zaman damgasını saklamadığını lütfen unutmayın. Yukarıdaki komut dosyası verileri Active dizininden çeker. Dolayısıyla veriler biraz tutarsız olabilir; çünkü kullanıcı Exchange Server E-postası gibi başka herhangi bir sistemde oturum açarsa, AD bu zaman damgasını alacaktır; kullanıcının SharePoint'te oturum açmış olup olmaması önemli değildir! İşte SharePoint Online için Azure AD'den bir kullanıcının Son Oturum Açma Zaman Damgasını Nasıl Alabilirim? başlıklı başka bir yazım.

Ancak, SharePoint web uygulamasının IIS Günlüklerini Günlük ayrıştırıcıyı kullanarak ayrıştırırsanız, belirli kullanıcının etkinliğini bulabilirsiniz: Günlük Ayrıştırıcı SharePoint ile nasıl kullanılır?

İlgili makaleler