Getting windows profile details with Powershell and WMI

By Andrei Ungureanu - Last updated: Friday, February 28, 2014 - Save & Share - Leave a Comment

Zilele astea jucandu-ma cu WMI si Powershell am vrut sa incerc sa obtin cateva date despre profilurile de pe sistemul meu folosind clasa Win32_UserProfile. Problema era ca doar cu Win32_UserProfile obtineam doar SID-ul utilizatorului, asa ca am sapat putin si am folosit Win32_Sid pentru a rezolva SID-ul. Ce a iesit puteti vedea mai jos.

$profiles = gwmi win32_userprofile
$objprofiles = @()
foreach ($profile in $profiles)
{
    $objprofile = new-object system.object
    $SID = $profile.SID
    $LastUseTime = $profile.LastUseTime
    $UserName = ([wmi]"win32_sid.sid=’$SID’").AccountName
    $localpath = $profile.LocalPath
    $objprofile |Add-Member -Type NoteProperty -Name Username -value $UserName
    $objprofile |Add-Member -Type NoteProperty -Name SID -value $SID
    $objprofile |Add-Member -Type NoteProperty -Name LastUseTime -value $LastUseTime
    $objprofile |Add-Member -Type NoteProperty -Name LocalPath -value $LocalPath

    $objprofiles += $objprofile

}
$objprofiles |sort lastusetime –descending

Iar output-ul arata cam asa. Obiectele din output sunt sortate dupa LastUseTime pentru a putea identifica usor profilele nefolosite de pe sistem sau pentru a vedea ultimul user ce s-a logat.

image

Din pacate nu aveam decat un user la momentul rularii scriptului deci nu se poate observa mare lucru.

Am incercat sa fac si un one liner insa nu am reusit de nici o culoare sa pun ([wmi]"win32_sid.sid=’$_.SID’").AccountName intr-un calculated property. Daca voi reusiti astept un semn.

PS:probabil exista si alte metode de a obtine date despre profil insa consider acest exemplu destul de bun pentru a invata cum sa rezolvi SID-ul si despre cum sa stochezi output-ul intr-un obiect.

Posted in Scripting • Tags: , , Top Of Page

Write a comment