uj könyvtär Scripts
This commit is contained in:
98
Scripts/powershell/Drucker_Überwachung_mit_SqlLite_0.1.ps1
Normal file
98
Scripts/powershell/Drucker_Überwachung_mit_SqlLite_0.1.ps1
Normal file
@@ -0,0 +1,98 @@
|
||||
# Drucklog_Export.ps1
|
||||
# Nyomtatási napló beolvasása Event Log-ból, feldolgozása és mentése SQLite adatbázisba duplikációk nélkül
|
||||
# Fontos modul SQLite feldolgozäshoz
|
||||
# Install-Module -Name SQLite -Scope CurrentUser
|
||||
# Import-Module SQLite
|
||||
|
||||
# --- Beállítások ---
|
||||
$logName = "Microsoft-Windows-PrintService/Operational"
|
||||
$dbPath = "$env:USERPROFILE\Desktop\drucklog_APS-PRINT01.db"
|
||||
# $dbPath = "$env:USERPROFILE\Desktop\drucklog_APS-PRINT02.db"
|
||||
|
||||
# --- SQLite kapcsolat ---
|
||||
# Add-Type -Path "C:\Tools\SQLite\System.Data.SQLite.dll"
|
||||
$connectionString = "Data Source=$dbPath;Version=3;"
|
||||
$connection = New-Object System.Data.SQLite.SQLiteConnection($connectionString)
|
||||
$connection.Open()
|
||||
|
||||
# --- Tábla létrehozása, ha nem létezik ---
|
||||
$createTableCmd = $connection.CreateCommand()
|
||||
$createTableCmd.CommandText = @"
|
||||
CREATE TABLE IF NOT EXISTS drucklog (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
event_id INTEGER UNIQUE,
|
||||
datum TEXT,
|
||||
tag TEXT,
|
||||
woche TEXT,
|
||||
benutzer TEXT,
|
||||
computer TEXT,
|
||||
dokument TEXT,
|
||||
drucker TEXT,
|
||||
seiten INTEGER
|
||||
);
|
||||
"@
|
||||
$createTableCmd.ExecuteNonQuery()
|
||||
|
||||
# --- Események lekérdezése ---
|
||||
$events = Get-WinEvent -LogName $logName -ErrorAction SilentlyContinue | Where-Object { $_.Id -eq 307 }
|
||||
|
||||
# --- Adatok feldolgozása ---
|
||||
$logList = 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 }
|
||||
|
||||
$calendar = [System.Globalization.CultureInfo]::CurrentCulture.Calendar
|
||||
$weekRule = [System.Globalization.CalendarWeekRule]::FirstFourDayWeek
|
||||
$firstDay = [System.DayOfWeek]::Monday
|
||||
$woche = $calendar.GetWeekOfYear($event.TimeCreated, $weekRule, $firstDay)
|
||||
|
||||
[PSCustomObject]@{
|
||||
Id = $event.RecordId
|
||||
Datum = $event.TimeCreated.ToString("yyyy-MM-dd HH:mm:ss")
|
||||
Tag = $event.TimeCreated.ToString("yyyy-MM-dd")
|
||||
Woche = $woche
|
||||
Benutzer = $benutzer
|
||||
Computer = $computer
|
||||
Dokument = $dokument
|
||||
Drucker = $drucker
|
||||
Seiten = $seiten
|
||||
}
|
||||
}
|
||||
|
||||
# --- Adatok mentése adatbázisba, duplikáció nélkül ---
|
||||
foreach ($row in $logList) {
|
||||
$checkCmd = $connection.CreateCommand()
|
||||
$checkCmd.CommandText = "SELECT COUNT(*) FROM drucklog WHERE event_id = @id"
|
||||
$checkCmd.Parameters.AddWithValue("@id", $row.Id)
|
||||
$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)
|
||||
VALUES (@id, @datum, @tag, @woche, @benutzer, @computer, @dokument, @drucker, @seiten)"
|
||||
$insertCmd.Parameters.AddWithValue("@id", $row.Id)
|
||||
$insertCmd.Parameters.AddWithValue("@datum", $row.Datum)
|
||||
$insertCmd.Parameters.AddWithValue("@tag", $row.Tag)
|
||||
$insertCmd.Parameters.AddWithValue("@woche", $row.Woche)
|
||||
$insertCmd.Parameters.AddWithValue("@benutzer", $row.Benutzer)
|
||||
$insertCmd.Parameters.AddWithValue("@computer", $row.Computer)
|
||||
$insertCmd.Parameters.AddWithValue("@dokument", $row.Dokument)
|
||||
$insertCmd.Parameters.AddWithValue("@drucker", $row.Drucker)
|
||||
$insertCmd.Parameters.AddWithValue("@seiten", $row.Seiten)
|
||||
$insertCmd.ExecuteNonQuery()
|
||||
}
|
||||
}
|
||||
|
||||
$connection.Close()
|
||||
Write-Host "Sikeresen frissítve: $($logList.Count) esemény feldolgozva."
|
||||
Reference in New Issue
Block a user