由於最近有個需求 是需要將很多台的SEVER上的 有登入過的帳號 列出其最後登入時間
Generate a list of local users and their last logon time
可是後來發現這個程式碼抓的是$_.LastWriteTime ,以致於有些SERVER不知道為何抓的時間不是很正確,並非是真的每個帳號的最後登入時間
因為該程式碼它是抓 下圖中user 資料夾的修改時間,但修改時間並不等於上次登入時間
因為有些SERVER明明昨天或者今天登入了 該修改日期仍然不會變動,或者有人知道要什麼解決這個問題嗎?明明有今天登入了,可是profile資料夾的修改日期卻不會變動
請問有人知道什麼改嗎??
或者有現成的範例更好
如果可以一次清查多台SERVER上的lastlogontime更好
不是要AD上每個帳號的最後登入時間喔,需要的是比如說公司有一百台SERVER
那我需要這一百台SERVER上的每個帳號的最後登出時間
後來參考如下網站 抓每個帳號的Ntuser.dat檔
ntuser.dat
把前面提到可以批次匯入電腦名單的程式改成抓ntuser.dat ,應該算有解決原本的問題了
多加了一個dat 去抓 ntuser.dat的日期
ElseIf ($profileaccess2 -eq "TRUE")
{
$compOS = get-wmiobject Win32_OperatingSystem -comp $computer
$compOSF = $compOS.Caption
$compSP = get-wmiobject Win32_OperatingSystem -comp $computer
$compSPF = $compSP.ServicePackMajorVersion
$profileNames = get-item "\$ppath2*"
foreach ($profilename in $profilenames)
{
$accountName = (get-item $profilename).PSChildName
$ntuserfolder = "\$ppath2$accountName\NTUSER.DAT"
$Dat = Get-Item $ntuserfolder -force
$Dat = $Dat.LastWriteTime| get-date –f "MM/dd/yyyy"
$lastaccesstime = (get-item $profilename).LastAccessTime | get-date –f "MM/dd/yyyy"
"$Computer,$AccountName,$LastAccesstime,$compOSF,$compSPF" | Out-File $UserInfoFile -encoding ASCII -append
write-host -fore Green "t$Computer
tt$AccountName
tt$LastAccesstime
tt$CompOSF
tt$CompSPF
tt$Dat
t"
write-host -fore Blue "`t--------------------------------------------------------------------------------------------------"
}