2017-09-27 9 views
0

を最後のログインを取得し、私は彼らのターミナルサーバにログインしているユーザーのそれぞれの最後のログインを表示するには、スクリプトに取り組んできました。彼らはドメインにではなく、彼らがドメイン上にある場合、それはその特定のサーバにログインしていないユーザーを表示するかどうPowerShellの - ローカルサーバーから最後のユーザーに

スクリプトが動作します。

その特定のサーバーにログインしている、それはユーザーのみを示し、ここでのスクリプトを編集するには私のための方法はありますか?ここで

はコードです:

#This script will check which users have logged on in the last X days 
#Set Variables 
#Change the number in the parenthesis after adddays to change how far back 
to filter 
#example (get-date).adddays(-30) gets all logins for the last 30 days from 
today (-60) would be the last 60 days 

$AuditDate = Get-Date (get-date).adddays(-30) -format "MM/dd/yyyy h:mm:ss 
tt" 
$ComputerName = $env:COMPUTERNAME 
$CurrentDate = Get-Date -UFormat "%Y-%m-%d" 


#Delete any previously created files 
Get-ChildItem -Path "C:\PowerShellScripts\LastLogon\Results" -Recurse | 
Where-Object CreationTime -lt (Get-Date).AddDays(-0) | Remove-Item - 
ErrorAction SilentlyContinue 

#The Login Profile is filtered here 
Get-WmiObject -class Win32_NetworkLoginProfile -ComputerName $ComputerName| 
#Where-Object -FilterScript {$_.LogonServer -like $ComputerName}| 
Where-Object -FilterScript {$_.FullName -notlike "*Agvance*"} | 
Where-Object -FilterScript {$_.FullName -notlike "*Sophos*"} | 
Where-Object -FilterScript {$_.FullName -ne "AgvAdmin"} | 
Where-Object -FilterScript {$_.FullName -ne ""} | 
Where-Object {$_.Name -notlike "*ssi1*"}| 
Where-Object {$_.Name -notlike "*ssi2*"}| 
Where-Object {$_.Name -notlike "*ssi3*"}| 
Where-Object {$_.Name -notlike "*ssi4*"}| 
Where-Object {$_.Name -notlike "*ssi5*"}| 
Where-Object {$_.Name -notlike "*ssi6*"}| 
Where-Object {$_.Name -notlike "*ssi7*"}| 
Where-Object {$_.Name -notlike "*ssi8*"}| 
Where-Object {$_.Name -notlike "*ssi9*"}| 
Where-Object {$_.Name -notlike "*ssiadmin*"}| 
Where-Object -FilterScript {$_.Name -notlike "*SYSTEM*"} | 
Where-Object -FilterScript {$_.Name -notlike "*SERVICE*"} | 
Where-Object -FilterScript {! 
[System.String]::IsNullOrWhiteSpace($_.LastLogon)} | 
Where-Object -FilterScript {$_.ConvertToDateTime($_.LastLogon) -ge 
$AuditDate} | 
Select-Object Name,LogonServer,@{label='LastLogon';expression= 
{$_.ConvertToDateTime($_.LastLogon)}} -ErrorAction SilentlyContinue | sort- 
object Name | Export-Csv 
C:\PowerShellScripts\Lastlogon\Results\LastLogon.csv -NoTypeInformation 

#Extra filter to filter out SSI users 
#Import-Csv C:\PowerShellScripts\Results\LastLogon.csv | Where-Object 
{$_.Name -notlike "*ssi*"} |Export-Csv 
C:\PowerShellScripts\Lastlogon\Results\LastLogon.csv -NoTypeInformation -Force 

#The user count is created here 
$number = (Import-Csv C:\PowerShellScripts\Lastlogon\Results\LastLogon.csv | 
measure | % { $_.Count}) 

#The file is renamed to include computername, date, and user count 
rename-item -path C:\PowerShellScripts\Lastlogon\Results\LastLogon.csv -NewName C:\PowerShellScripts\Lastlogon\Results\LastLogon-$ComputerName-$CurrentDate-UserCount-$number.csv 

答えて

0

あなたはこれを試してみると、それはあなたが必要なものを提供してかどうかを確認することができます。

$time = (Get-Date) – (New-TimeSpan -Day 30) 

# You can additional filters in ? { $_.Properties[1].Value -ne 'SYSTEM' } by 
# modifying it with -and statements 
# i.e. ? { ($_.Properties[1].Value -ne 'SYSTEM') -and ($_.Properties[1].Value -ne 'USER')} 
Get-WinEvent -FilterHashtable @{Logname='Security';ID=4672;starttime=$time} -ComputerName $ComputerName | ? { $_.Properties[1].Value -ne 'SYSTEM' } | select @{N='User';E={$_.Properties[1].Value}}, @{N='TimeCreated';E={$_.TimeCreated}} 
+0

これはうまくいくが、DWM-XXXXがたくさん出てきている。私はそれらが実際のユーザーかどうかはわかりませんが、私はそこの他のユーザーのいくつかを認識しています。 – RedThorn88

+0

DWMは「Desktop Windows Manager」の略です。これらは、「システム」アカウントと同じように除外することができます。 Wikipediaの引用文「Desktop Window Manager(DWM、以前のDesktop Compositing EngineまたはDCE)」は、Windows Vista、Windows 7、Windows 8およびWindows 10のウィンドウマネージャであり、ハードウェアアクセラレーションを使用してWindowsのグラフィカルユーザーインターフェイスをレンダリングできます。 " [ウィキ](https://en.wikipedia.org/wiki/Desktop_Window_Manager)他のユーザーについては – ekeeling

+0

は、あなたがいるかどうかを確認するには 'には、Get-ADUser -Filter {sAMAccountNameの様 "* USERNAME *を"}' を使用してADを照会することができます彼らは有効なアカウントですか?サービスアカウントになる可能性があります。彼らがADにいない場合、あなたはここに投稿することができ、私はそれらを認識するかどうかわかります。 – ekeeling

関連する問題