यह सही नहीं हो सकता है, लेकिन यह आपको सही रास्ते पर ले जाएगा। सटीक अंतिम उपयोगकर्ता प्राप्त करने के लिए, कृपया इसे देखें लिपि । यह आपको सटीक अंतिम उपयोगकर्ता को फ़िल्टर करने के तरीके के बारे में और जानकारी देगा। नीचे दिए गए उदाहरण में, मैंने उपयोग किया है, चयन-ऑब्जेक्ट -First 1 जो उपयोगकर्ता पर अंतिम लॉग का एक बहुत अच्छा संकेतक होना चाहिए। उपयोगकर्ता पर अंतिम लॉग इन करने के लिए, आपको उपयोग करने की आवश्यकता है
Get-WmiObject -Class Win32_UserProfile
Get-ADComputer और Get-WMIObject जानकारी को 'जॉइन' करने के लिए, मैंने एक हैश टेबल का उपयोग किया है।
यदि आप इसे किसी डोमेन व्यवस्थापक खाते से चला रहे हैं, तो आप -credential $ क्रेडेंशियल भाग को बाहर निकाल सकते हैं। अन्यथा, इसे अंदर छोड़ दें और आप इसे सामान्य कार्य केंद्र से आरएसएटी उपकरणों के साथ चला सकते हैं ताकि गेट-एडीकॉम उपलब्ध हो।
नीचे कोड:
$computers = Get-ADComputer -Filter { OperatingSystem -NotLike '*Server*' } -Properties OperatingSystem
$credential = Get-Credential -Message "Please enter your administrator username and password"
foreach($computer in $computers) {
$pcinfo = Get-ADComputer $computer.Name -Properties lastlogontimestamp | `
Select-Object @{n="Computer";e={$_.Name}}, `
@{Name="Lastlogon";Expression[DateTime]::FromFileTime($_.lastLogonTimestamp)}}
$lastuserlogoninfo = Get-WmiObject -Class Win32_UserProfile -ComputerName $computer.name -Credential $credential | Select-Object -First 1
$SecIdentifier = New-Object System.Security.Principal.SecurityIdentifier($lastuserlogoninfo.SID)
$username = $SecIdentifier.Translate([System.Security.Principal.NTAccount])
# Create hashtable for properties
$properties = @{'Computer'=$pcinfo.Computer;
'LastLogon'=$pcinfo.Lastlogon;
'User'=$username.value
} #end $properties
write-output (New-Object -Typename PSObject -Property $properties)
}
जब आप इसका उपयोग करते हैं तो फ़ॉर्मेटिंग की जाँच करें। इसमें से कुछ को मुझे स्क्रिप्ट विंडो में फिट करने के लिए एक एस्केप (`) चरित्र में जोड़ना पड़ा।
धन्यवाद, टिम।