Я пытаюсь собрать данные из журналов событий входа в систему, отключения, выхода из системы и т. Д. ... эти данные будут храниться в формате CSV.
Это сценарий, который я работаю, полученный от Microsoft Technet, и я изменил его, чтобы соответствовать моим требованиям.Скрипт работает, как и должно быть, но идет цикл, который я не могу понять, как его остановить.
$ServersToQuery = Get-Content "C:\Users\metho.HOME\Desktop\computernames.txt"
$cred = "home\Administrator"
$StartTime = "September 19, 2018"
#$Yesterday = (Get-Date) - (New-TimeSpan -Days 1)
foreach ($Server in $ServersToQuery) {
$LogFilter = @{
LogName = 'Microsoft-Windows-TerminalServices-LocalSessionManager/Operational'
ID = 21, 23, 24, 25
StartTime = (Get-Date).AddDays(-1)
}
$AllEntries = Get-WinEvent -FilterHashtable $LogFilter -ComputerName $Server -Credential $cred
$AllEntries | Foreach {
$entry = [xml]$_.ToXml()
$Output += New-Object PSObject -Property @{
TimeCreated = $_.TimeCreated
User = $entry.Event.UserData.EventXML.User
IPAddress = $entry.Event.UserData.EventXML.Address
EventID = $entry.Event.System.EventID
ServerName = $Server
}
}
}
$FilteredOutput += $Output | Select TimeCreated, User, ServerName, IPAddress, @{Name='Action';Expression={
if ($_.EventID -eq '21'){"logon"}
if ($_.EventID -eq '22'){"Shell start"}
if ($_.EventID -eq '23'){"logoff"}
if ($_.EventID -eq '24'){"disconnected"}
if ($_.EventID -eq '25'){"reconnection"}
}
}
$Date = (Get-Date -Format s) -replace ":", "-"
$FilePath = "$env:USERPROFILE\Desktop\$Date`_RDP_Report.csv"
$FilteredOutput | Sort TimeCreated | Export-Csv $FilePath -NoTypeInformation
Write-host "Writing File: $FilePath" -ForegroundColor Cyan
Write-host "Done!" -ForegroundColor Cyan
#End
В первый раз, когда я запускаю скрипт, он работает нормально, и я получаювывод csv в порядке.Когда я снова запускаю сценарий, создается новый CSV (как и должно быть), но одни и те же записи журнала событий создаются дважды и запускаются снова, чем три записи создаются для одного и того же события.Это очень странно, так как каждый раз создается новый csv, и у меня нет настроенного ключа -append для export-csv.
$FilteredOutput = @()
$Output = @()
Я попытался добавить эти две строки в приведенном выше сценарии, когда я где-то читал, что это необходимо, если я смешиваю несколько переменных в массив (я не понимаю этого, поэтому аплодисменты, если я ошибаюсь),
Может кто-нибудь, пожалуйста, помогите мне в этом, что более важно, мне нужно понять это, поскольку это полезно знать для моих будущих проектов.
Спасибо, agian.
mEtho