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
これはうまくいくが、DWM-XXXXがたくさん出てきている。私はそれらが実際のユーザーかどうかはわかりませんが、私はそこの他のユーザーのいくつかを認識しています。 – RedThorn88
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
は、あなたがいるかどうかを確認するには 'には、Get-ADUser -Filter {sAMAccountNameの様 "* USERNAME *を"}' を使用してADを照会することができます彼らは有効なアカウントですか?サービスアカウントになる可能性があります。彼らがADにいない場合、あなたはここに投稿することができ、私はそれらを認識するかどうかわかります。 – ekeeling