3

過去 14 日間のユーザー ログインを表示する方法に関する非常に優れたコードを見つけました: Powershell Security Log Get-EventLog

$Date = [DateTime]::Now.AddDays(-14)
$Date.tostring("MM-dd-yyyy"), $env:Computername
$eventList = @()
Get-EventLog "Security" -After $Date `
    | Where -FilterScript {$_.EventID -eq 4624 -and $_.ReplacementStrings[4].Length -gt 10 -and $_.ReplacementStrings[5] -notlike "*$"} `
    | foreach-Object {
        $row = "" | Select UserName, LoginTime
        $row.UserName = $_.ReplacementStrings[5]
        $row.LoginTime = $_.TimeGenerated
        $eventList += $row
      }
$eventList

しかし、私の質問は、このコードをどのように変更して、最新の 2 つのレコードを選択するかということです。

私は次のことを試しました:

Get-EventLog "Security" -After $Date `
| Where -FilterScript {$_.EventID -eq 4624 -and $_.ReplacementStrings[4].Length -gt 10 -and $_.ReplacementStrings[5] -notlike "*$"} `
| {-Newest 2} 

そして、私はエラーが発生します:Missing expression after unary operator '-'.

最後の 2 つのログイン、つまり現在のログインと現在のユーザーの前に最後にログインした人を取得するクリーンな方法は何ですか?

編集:問題は解決しました。ここに完全なコードがあります

$Date = [DateTime]::Now.AddDays(-14)
$Date.tostring("MM-dd-yyyy"), $env:Computername
$eventList = @()
Get-EventLog "Security" -After $Date `
    | Where -FilterScript {$_.EventID -eq 4624 -and $_.ReplacementStrings[4].Length -gt 10 -and $_.ReplacementStrings[5] -notlike "*$"} `
    | Select-Object -First 2 `
    | foreach-Object {
        $row = "" | Select UserName, LoginTime
        $row.UserName = $_.ReplacementStrings[5]
        $row.LoginTime = $_.TimeGenerated
        $eventList += $row
        }
$eventList
4

1 に答える 1

5

それ以外の:

| {-Newest 2} 

これを試して:

| Select-Object -first 2
于 2013-07-30T16:30:26.750 に答える