uj könyvtär Scripts
This commit is contained in:
81
Scripts/powershell/Drucklog_MySQL_0.1-from-Dev.ps1
Normal file
81
Scripts/powershell/Drucklog_MySQL_0.1-from-Dev.ps1
Normal file
@@ -0,0 +1,81 @@
|
||||
# Drucklog_MySQL.ps1
|
||||
# Install-Module MySQLCmdlets
|
||||
# Nyomtatási napló export MySQL adatbázisba
|
||||
# Aufgabeplannung: Taglich um 8.00 Uhr
|
||||
# Name: Drucklog_MySQL_0.1.ps1
|
||||
# powershell.exe -ExecutionPolicy Bypass -File "-ExecutionPolicy Bypass -File "C:\Tools\drucklog_export_0.1.ps1"
|
||||
|
||||
# Beállítások
|
||||
$logName = "Microsoft-Windows-PrintService/Operational"
|
||||
$mysqlHost = "10.101.0.82"
|
||||
$mysqlUser = "druckloguser"
|
||||
$mysqlPassword = "Test123#"
|
||||
$mysqlDatabase = "drucklog"
|
||||
$quelleServer = $env:COMPUTERNAME # vagy: "Szerver01"
|
||||
|
||||
# MySQL .NET csomag betöltése (előzetesen szükséges: MySql.Data.dll)
|
||||
# Add-Type -Path "C:\Tools\MySql.Data.dll"
|
||||
# Add-Type -Path "C:\Program Files (x86)\MySQL\MySQL Connector NET 9.4\MySql.Data.dll"
|
||||
[Reflection.Assembly]::LoadFrom("C:\Program Files (x86)\MySQL\MySQL Connector NET 9.4\MySql.Data.dll") | Out-Null
|
||||
|
||||
# Kapcsolódás
|
||||
$connectionString = "server=$mysqlHost;user id=$mysqlUser;password=$mysqlPassword;database=$mysqlDatabase;SslMode=none"
|
||||
$connection = New-Object MySql.Data.MySqlClient.MySqlConnection($connectionString)
|
||||
$connection.Open()
|
||||
|
||||
# Lekérés a logból
|
||||
$events = Get-WinEvent -LogName $logName -ErrorAction SilentlyContinue | Where-Object { $_.Id -eq 307 }
|
||||
|
||||
# Kulturális beállítás a heti számításhoz
|
||||
$calendar = [System.Globalization.CultureInfo]::CurrentCulture.Calendar
|
||||
$weekRule = [System.Globalization.CalendarWeekRule]::FirstFourDayWeek
|
||||
$firstDay = [System.DayOfWeek]::Monday
|
||||
|
||||
$ujBejegyzes = 0
|
||||
|
||||
foreach ($event in $events) {
|
||||
$msg = $event.Message
|
||||
|
||||
if ($msg -match "im Besitz von (.+?) auf (.+?) wurde auf (.+?) über Port") {
|
||||
$benutzer = $matches[1]
|
||||
$computer = $matches[2]
|
||||
$drucker = $matches[3]
|
||||
} else {
|
||||
continue
|
||||
}
|
||||
|
||||
$dokument = if ($msg -match "Dokument (.+?), Dokument drucken") { $matches[1] } else { "Unbekannt" }
|
||||
$seiten = if ($msg -match "Gedruckte Seiten: (\d+)") { [int]$matches[1] } else { 0 }
|
||||
$woche = $calendar.GetWeekOfYear($event.TimeCreated, $weekRule, $firstDay)
|
||||
$datum = $event.TimeCreated.ToString("yyyy-MM-dd HH:mm:ss")
|
||||
$tag = $event.TimeCreated.ToString("yyyy-MM-dd")
|
||||
$id = $event.RecordId
|
||||
|
||||
# Duplikáció ellenőrzés
|
||||
$checkCmd = $connection.CreateCommand()
|
||||
$checkCmd.CommandText = "SELECT COUNT(*) FROM drucklog WHERE event_id = @id AND quelle_server = @qs"
|
||||
$checkCmd.Parameters.AddWithValue("@id", $id)
|
||||
$checkCmd.Parameters.AddWithValue("@qs", $quelleServer)
|
||||
$exists = $checkCmd.ExecuteScalar()
|
||||
|
||||
if ($exists -eq 0) {
|
||||
$insertCmd = $connection.CreateCommand()
|
||||
$insertCmd.CommandText = "INSERT INTO drucklog (event_id, datum, tag, woche, benutzer, computer, dokument, drucker, seiten, quelle_server)
|
||||
VALUES (@id, @datum, @tag, @woche, @benutzer, @computer, @dokument, @drucker, @seiten, @qs)"
|
||||
$insertCmd.Parameters.AddWithValue("@id", $id)
|
||||
$insertCmd.Parameters.AddWithValue("@datum", $datum)
|
||||
$insertCmd.Parameters.AddWithValue("@tag", $tag)
|
||||
$insertCmd.Parameters.AddWithValue("@woche", $woche)
|
||||
$insertCmd.Parameters.AddWithValue("@benutzer", $benutzer)
|
||||
$insertCmd.Parameters.AddWithValue("@computer", $computer)
|
||||
$insertCmd.Parameters.AddWithValue("@dokument", $dokument)
|
||||
$insertCmd.Parameters.AddWithValue("@drucker", $drucker)
|
||||
$insertCmd.Parameters.AddWithValue("@seiten", $seiten)
|
||||
$insertCmd.Parameters.AddWithValue("@qs", $quelleServer)
|
||||
$insertCmd.ExecuteNonQuery()
|
||||
$ujBejegyzes++
|
||||
}
|
||||
}
|
||||
|
||||
$connection.Close()
|
||||
Write-Host "Feldolgozott események: $($events.Count) | Új bejegyzés: $ujBejegyzes"
|
||||
Reference in New Issue
Block a user