.
This commit is contained in:
@@ -1,47 +0,0 @@
|
||||
$events = Get-WinEvent -LogName "Microsoft-Windows-PrintService/Operational" -MaxEvents 500 |
|
||||
Where-Object { $_.Id -eq 307 }
|
||||
|
||||
$logList = @()
|
||||
|
||||
foreach ($event in $events) {
|
||||
$message = $event.Message
|
||||
$user = ""
|
||||
$document = ""
|
||||
$printer = ""
|
||||
$pages = ""
|
||||
|
||||
# Felhasználó (pl. L.Vogt auf APS-NB072)
|
||||
if ($message -match "im Besitz von (.+?) wurde auf") {
|
||||
$user = $matches[1].Trim()
|
||||
}
|
||||
|
||||
# Nyomtató neve (pl. Jasenitz)
|
||||
if ($message -match "wurde auf (.+?) über Port") {
|
||||
$printer = $matches[1].Trim()
|
||||
}
|
||||
|
||||
# Oldalszám (pl. Gedruckte Seiten: 1)
|
||||
if ($message -match "Gedruckte Seiten:\s+(\d+)") {
|
||||
$pages = $matches[1]
|
||||
}
|
||||
|
||||
# Dokumentum sorszám (pl. Dokument 62) – jobb híján
|
||||
if ($message -match "^Dokument\s+(\d+)") {
|
||||
$document = "Dokument " + $matches[1]
|
||||
}
|
||||
|
||||
$logList += [PSCustomObject]@{
|
||||
Datum = $event.TimeCreated
|
||||
Benutzer = $user
|
||||
Dokument = $document
|
||||
Drucker = $printer
|
||||
Seiten = $pages
|
||||
}
|
||||
}
|
||||
|
||||
# Exportálás CSV-be
|
||||
$exportPfad = "$env:USERPROFILE\Desktop\drucklog_export.csv"
|
||||
$logList | Export-Csv -Path $exportPfad -NoTypeInformation -Encoding UTF8
|
||||
|
||||
Write-Host "Exportálás kész: $exportPfad"
|
||||
|
||||
@@ -1,54 +0,0 @@
|
||||
$events = Get-WinEvent -LogName "Microsoft-Windows-PrintService/Operational" -MaxEvents 500 |
|
||||
Where-Object { $_.Id -eq 307 }
|
||||
|
||||
$logList = @()
|
||||
|
||||
foreach ($event in $events) {
|
||||
$message = $event.Message
|
||||
$user = ""
|
||||
$computer = ""
|
||||
$document = ""
|
||||
$printer = ""
|
||||
$pages = ""
|
||||
|
||||
# Felhasználó és gép különválasztása
|
||||
if ($message -match "im Besitz von (.+?) wurde auf") {
|
||||
$fullUser = $matches[1].Trim()
|
||||
if ($fullUser -match "^(.+?) auf (.+)$") {
|
||||
$user = $matches[1].Trim()
|
||||
$computer = $matches[2].Trim()
|
||||
} else {
|
||||
$user = $fullUser
|
||||
}
|
||||
}
|
||||
|
||||
# Nyomtató neve (pl. Jasenitz)
|
||||
if ($message -match "wurde auf (.+?) über Port") {
|
||||
$printer = $matches[1].Trim()
|
||||
}
|
||||
|
||||
# Oldalszám (pl. Gedruckte Seiten: 1)
|
||||
if ($message -match "Gedruckte Seiten:\s+(\d+)") {
|
||||
$pages = $matches[1]
|
||||
}
|
||||
|
||||
# Dokument sorszám (pl. Dokument 62)
|
||||
if ($message -match "^Dokument\s+(\d+)") {
|
||||
$document = "Dokument " + $matches[1]
|
||||
}
|
||||
|
||||
$logList += [PSCustomObject]@{
|
||||
Datum = $event.TimeCreated
|
||||
Benutzer = $user
|
||||
Computer = $computer
|
||||
Dokument = $document
|
||||
Drucker = $printer
|
||||
Seiten = $pages
|
||||
}
|
||||
}
|
||||
|
||||
# Exportálás CSV-be
|
||||
$exportPfad = "$env:USERPROFILE\Desktop\drucklog_export.csv"
|
||||
$logList | Export-Csv -Path $exportPfad -NoTypeInformation -Encoding UTF8
|
||||
|
||||
Write-Host "Exportálás kész: $exportPfad"
|
||||
@@ -1,75 +0,0 @@
|
||||
# Printer Log Report 0.3
|
||||
#
|
||||
# Get-WinEvent on Englische Windows : Get-WinEvent -LogName "Microsoft-Windows-PrintService/Operational"
|
||||
# Get-WinEvent on Deutsche Windows : Get-WinEvent -LogName "Microsoft-Windows-PrintService/Betriebsbereit"
|
||||
|
||||
$events = Get-WinEvent -LogName "Microsoft-Windows-PrintService/Operational" -MaxEvents 500 |
|
||||
Where-Object { $_.Id -eq 307 }
|
||||
|
||||
$logList = @()
|
||||
|
||||
foreach ($event in $events) {
|
||||
$message = $event.Message
|
||||
$user = ""
|
||||
$computer = ""
|
||||
$document = ""
|
||||
$printer = ""
|
||||
$pages = 0
|
||||
|
||||
# Felhasználó és gép különválasztása
|
||||
if ($message -match "im Besitz von (.+?) wurde auf") {
|
||||
$fullUser = $matches[1].Trim()
|
||||
if ($fullUser -match "^(.+?) auf (.+)$") {
|
||||
$user = $matches[1].Trim()
|
||||
$computer = $matches[2].Trim()
|
||||
} else {
|
||||
$user = $fullUser
|
||||
}
|
||||
}
|
||||
|
||||
# Nyomtató neve (pl. Jasenitz)
|
||||
if ($message -match "wurde auf (.+?) über Port") {
|
||||
$printer = $matches[1].Trim()
|
||||
}
|
||||
|
||||
# Oldalszám (pl. Gedruckte Seiten: 1)
|
||||
if ($message -match "Gedruckte Seiten:\s+(\d+)") {
|
||||
$pages = [int]$matches[1]
|
||||
}
|
||||
|
||||
# Dokument sorszám (pl. Dokument 62)
|
||||
if ($message -match "^Dokument\s+(\d+)") {
|
||||
$document = "Dokument " + $matches[1]
|
||||
}
|
||||
|
||||
$logList += [PSCustomObject]@{
|
||||
Datum = $event.TimeCreated
|
||||
Benutzer = $user
|
||||
Computer = $computer
|
||||
Dokument = $document
|
||||
Drucker = $printer
|
||||
Seiten = $pages
|
||||
}
|
||||
}
|
||||
|
||||
# Export részletes lista
|
||||
$exportPfad = "$env:USERPROFILE\Desktop\drucklog_export.csv"
|
||||
$logList | Export-Csv -Path $exportPfad -NoTypeInformation -Encoding UTF8
|
||||
|
||||
# ✅ Összesítés felhasználónként
|
||||
$summary = $logList | Group-Object -Property Benutzer | ForEach-Object {
|
||||
$userGroup = $_.Group
|
||||
[PSCustomObject]@{
|
||||
Benutzer = $_.Name
|
||||
Anzahl_Dokumente = $userGroup.Count
|
||||
Gesamt_Seiten = ($userGroup | Measure-Object -Property Seiten -Sum).Sum
|
||||
}
|
||||
}
|
||||
|
||||
# Export összesítés
|
||||
$summaryPfad = "$env:USERPROFILE\Desktop\drucklog_summary.csv"
|
||||
$summary | Export-Csv -Path $summaryPfad -NoTypeInformation -Encoding UTF8
|
||||
|
||||
Write-Host "Exportálás kész:"
|
||||
Write-Host "- Részletes lista: $exportPfad"
|
||||
Write-Host "- Felhasználónkénti összesítés: $summaryPfad"
|
||||
@@ -1,152 +0,0 @@
|
||||
# Printer Log Report 0.3
|
||||
#
|
||||
# Get-WinEvent on Englische Windows : Get-WinEvent -LogName "Microsoft-Windows-PrintService/Operational"
|
||||
# Get-WinEvent on Deutsche Windows : Get-WinEvent -LogName "Microsoft-Windows-PrintService/Betriebsbereit"
|
||||
|
||||
|
||||
$events = Get-WinEvent -LogName "Microsoft-Windows-PrintService/Operational" -MaxEvents 2000 |
|
||||
Where-Object { $_.Id -eq 307 }
|
||||
|
||||
$logList = @()
|
||||
|
||||
foreach ($event in $events) {
|
||||
$message = $event.Message
|
||||
$user = ""
|
||||
$computer = ""
|
||||
$document = ""
|
||||
$printer = ""
|
||||
$pages = 0
|
||||
|
||||
if ($message -match "im Besitz von (.+?) wurde auf") {
|
||||
$fullUser = $matches[1].Trim()
|
||||
if ($fullUser -match "^(.+?) auf (.+)$") {
|
||||
$user = $matches[1].Trim()
|
||||
$computer = $matches[2].Trim()
|
||||
} else {
|
||||
$user = $fullUser
|
||||
}
|
||||
}
|
||||
|
||||
if ($message -match "wurde auf (.+?) über Port") {
|
||||
$printer = $matches[1].Trim()
|
||||
}
|
||||
|
||||
if ($message -match "Gedruckte Seiten:\s+(\d+)") {
|
||||
$pages = [int]$matches[1]
|
||||
}
|
||||
|
||||
if ($message -match "^Dokument\s+(\d+)") {
|
||||
$document = "Dokument " + $matches[1]
|
||||
}
|
||||
|
||||
$logList += [PSCustomObject]@{
|
||||
Datum = $event.TimeCreated
|
||||
Tag = $event.TimeCreated.Date.ToString("yyyy-MM-dd")
|
||||
Woche = Get-Date $event.TimeCreated -UFormat "%Y-W%V"
|
||||
Benutzer = $user
|
||||
Computer = $computer
|
||||
Dokument = $document
|
||||
Drucker = $printer
|
||||
Seiten = $pages
|
||||
}
|
||||
}
|
||||
|
||||
# 🔹 Export részletes lista
|
||||
$exportPfad = "$env:USERPROFILE\Desktop\drucklog_export.csv"
|
||||
$logList | Export-Csv -Path $exportPfad -NoTypeInformation -Encoding UTF8
|
||||
|
||||
# 🔸 Összesítés felhasználónként (teljes)
|
||||
$summary = $logList | Group-Object -Property Benutzer | ForEach-Object {
|
||||
$userGroup = $_.Group
|
||||
[PSCustomObject]@{
|
||||
Benutzer = $_.Name
|
||||
Anzahl_Dokumente = $userGroup.Count
|
||||
Gesamt_Seiten = ($userGroup | Measure-Object -Property Seiten -Sum).Sum
|
||||
}
|
||||
}
|
||||
$summary | Export-Csv -Path "$env:USERPROFILE\Desktop\drucklog_summary.csv" -NoTypeInformation -Encoding UTF8
|
||||
|
||||
# 🔸 Napi összesítés felhasználónként
|
||||
$dailySummary = $logList | Group-Object -Property Tag, Benutzer | ForEach-Object {
|
||||
$day = $_.Group[0].Tag
|
||||
$user = $_.Group[0].Benutzer
|
||||
$pages = ($_.Group | Measure-Object -Property Seiten -Sum).Sum
|
||||
$docs = $_.Count
|
||||
|
||||
[PSCustomObject]@{
|
||||
Datum = $day
|
||||
Benutzer = $user
|
||||
Dokumente = $docs
|
||||
Seiten = $pages
|
||||
}
|
||||
}
|
||||
$dailySummary | Export-Csv -Path "$env:USERPROFILE\Desktop\drucklog_daily.csv" -NoTypeInformation -Encoding UTF8
|
||||
|
||||
# 🔸 Heti összesítés felhasználónként (ISO hét formátum: pl. 2025-W30)
|
||||
$weeklySummary = $logList | Group-Object -Property Woche, Benutzer | ForEach-Object {
|
||||
$week = $_.Group[0].Woche
|
||||
$user = $_.Group[0].Benutzer
|
||||
$pages = ($_.Group | Measure-Object -Property Seiten -Sum).Sum
|
||||
$docs = $_.Count
|
||||
|
||||
[PSCustomObject]@{
|
||||
Woche = $week
|
||||
Benutzer = $user
|
||||
Dokumente = $docs
|
||||
Seiten = $pages
|
||||
}
|
||||
}
|
||||
$weeklySummary | Export-Csv -Path "$env:USERPROFILE\Desktop\drucklog_weekly.csv" -NoTypeInformation -Encoding UTF8
|
||||
|
||||
Write-Host "Exportálás kész:"
|
||||
Write-Host "- Részletes lista: drucklog_export.csv"
|
||||
Write-Host "- Összesítés: drucklog_summary.csv"
|
||||
Write-Host "- Napi összesítés: drucklog_daily.csv"
|
||||
Write-Host "- Heti összesítés: drucklog_weekly.csv"
|
||||
|
||||
# 🔸 Nyomtatónkénti összesítés
|
||||
$printerSummary = $logList | Group-Object -Property Drucker | ForEach-Object {
|
||||
$printer = $_.Name
|
||||
$pages = ($_.Group | Measure-Object -Property Seiten -Sum).Sum
|
||||
$docs = $_.Count
|
||||
|
||||
[PSCustomObject]@{
|
||||
Drucker = $printer
|
||||
Dokumente = $docs
|
||||
Seiten = $pages
|
||||
}
|
||||
}
|
||||
|
||||
$printerSummary | Export-Csv -Path "$env:USERPROFILE\Desktop\drucklog_by_printer.csv" -NoTypeInformation -Encoding UTF8
|
||||
|
||||
# 🔸 Napi összesítés nyomtatónként
|
||||
$dailyPrinterSummary = $logList | Group-Object -Property Tag, Drucker | ForEach-Object {
|
||||
$day = $_.Group[0].Tag
|
||||
$printer = $_.Group[0].Drucker
|
||||
$pages = ($_.Group | Measure-Object -Property Seiten -Sum).Sum
|
||||
$docs = $_.Count
|
||||
|
||||
[PSCustomObject]@{
|
||||
Datum = $day
|
||||
Drucker = $printer
|
||||
Dokumente = $docs
|
||||
Seiten = $pages
|
||||
}
|
||||
}
|
||||
$dailyPrinterSummary | Export-Csv -Path "$env:USERPROFILE\Desktop\drucklog_daily_by_printer.csv" -NoTypeInformation -Encoding UTF8
|
||||
|
||||
# 🔸 Heti összesítés nyomtatónként
|
||||
$weeklyPrinterSummary = $logList | Group-Object -Property Woche, Drucker | ForEach-Object {
|
||||
$week = $_.Group[0].Woche
|
||||
$printer = $_.Group[0].Drucker
|
||||
$pages = ($_.Group | Measure-Object -Property Seiten -Sum).Sum
|
||||
$docs = $_.Count
|
||||
|
||||
[PSCustomObject]@{
|
||||
Woche = $week
|
||||
Drucker = $printer
|
||||
Dokumente = $docs
|
||||
Seiten = $pages
|
||||
}
|
||||
}
|
||||
$weeklyPrinterSummary | Export-Csv -Path "$env:USERPROFILE\Desktop\drucklog_weekly_by_printer.csv" -NoTypeInformation -Encoding UTF8
|
||||
@@ -1,98 +0,0 @@
|
||||
# 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."
|
||||
@@ -1,101 +0,0 @@
|
||||
# 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 ---
|
||||
$ujBejegyzesek = 0
|
||||
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()
|
||||
$ujBejegyzesek++
|
||||
}
|
||||
}
|
||||
|
||||
$connection.Close()
|
||||
Write-Host "Sikeresen frissítve: $($logList.Count) esemény feldolgozva."
|
||||
Write-Host "Új bejegyzések az adatbázisban: $ujBejegyzesek"
|
||||
@@ -1,81 +0,0 @@
|
||||
# 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"
|
||||
@@ -1,12 +1,16 @@
|
||||
# Drucklog_MySQL.ps1
|
||||
# Drucklog_MySQL.ps1
|
||||
# Install-Module MySQLCmdlets
|
||||
# Nyomtatási napló export MySQL adatbázisba
|
||||
|
||||
#Teszt
|
||||
Add-Content -Path "C:\Tools\drucklog_task.log" -Value "$(Get-Date -Format "yyyy-MM-dd HH:mm:ss") - Script futott"
|
||||
|
||||
|
||||
# Beállítások
|
||||
$logName = "Microsoft-Windows-PrintService/Operational"
|
||||
$mysqlHost = "10.101.0.82"
|
||||
$mysqlUser = "druckloguser"
|
||||
$mysqlPassword = "Test123#"
|
||||
$mysqlHost = "10.102.1.65"
|
||||
$mysqlUser = "svc.druckerlog"
|
||||
$mysqlPassword = "ctqBirh3eEbakLb96Ks1"
|
||||
$mysqlDatabase = "drucklog"
|
||||
$quelleServer = $env:COMPUTERNAME # vagy: "Szerver01"
|
||||
|
||||
@@ -15,6 +19,7 @@ $quelleServer = $env:COMPUTERNAME # vagy: "Szerver01"
|
||||
# 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)
|
||||
@@ -1,91 +0,0 @@
|
||||
# Requires -Modules @{ModuleName='Microsoft.Graph.Applications';ModuleVersion='1.19.0'}, @{ModuleName='Microsoft.Graph.Mail';ModuleVersion='1.19.0'}
|
||||
|
||||
# ==============================================================================
|
||||
# KONFIGURÁCIÓ
|
||||
# ==============================================================================
|
||||
# Adatok az Azure App Regisztrációból
|
||||
# Tennant ID : caee3499-03f8-4175-9fa8-a935248d0ece
|
||||
$TENANT_ID = "caee3499-03f8-4175-9fa8-a935248d0ece"
|
||||
# Client Id : 3a08b279-1fc3-419f-a77e-31f12a0f65f7
|
||||
$CLIENT_ID = "3a08b279-1fc3-419f-a77e-31f12a0f65f7"
|
||||
# Key : Rk-8Q~nJ.sZ-xUiNxtEDdzVgoFFosODLVHX~jdrh (érték, nem Secret ID)
|
||||
$CLIENT_SECRET = "Rk-8Q~nJ.sZ-xUiNxtEDdzVgoFFosODLVHX~jdrh"
|
||||
|
||||
# Figyelt postafiók
|
||||
$USER_EMAIL = "i.meszely@aps-hh.de"
|
||||
|
||||
# Microsoft Graph API végpontok (alapértelmezett, nem kell módosítani)
|
||||
$GRAPH_API_ENDPOINT = "https://graph.microsoft.com/v1.0"
|
||||
|
||||
# Scopes needed for the application
|
||||
# Mail.ReadWrite for reading, marking as read, and eventually moving emails
|
||||
$SCOPES = @("Mail.ReadWrite")
|
||||
|
||||
# ==============================================================================
|
||||
# FÜGGVÉNYEK
|
||||
# ==============================================================================
|
||||
|
||||
Function Connect-GraphAPI {
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Csatlakozik a Microsoft Graph API-hoz kliens hitelesítő adatokkal.
|
||||
.DESCRIPTION
|
||||
Ez a függvény megpróbál csatlakozni a Microsoft Graph API-hoz az Azure AD alkalmazás regisztrációjában megadott
|
||||
kliens hitelesítő adatok (Tenant ID, Client ID, Client Secret) segítségével.
|
||||
Sikeres kapcsolat esetén egy Access Token-t ad vissza. Hiba esetén null-t ad vissza és hibaüzenetet ír ki.
|
||||
.OUTPUTS
|
||||
Access Token (String) vagy $null
|
||||
#>
|
||||
[CmdletBinding()]
|
||||
Param()
|
||||
|
||||
Write-Host "Graph API-hoz való csatlakozás megkezdése..." -ForegroundColor Cyan
|
||||
|
||||
try {
|
||||
# Ellenőrizzük, hogy a szükséges modulok telepítve vannak-e
|
||||
$requiredModules = @("Microsoft.Graph.Applications", "Microsoft.Graph.Mail")
|
||||
foreach ($module in $requiredModules) {
|
||||
if (-not (Get-Module -ListAvailable -Name $module)) {
|
||||
Write-Warning "A(z) '$module' PowerShell modul nincs telepítve. Kérjük telepítse futtatás előtt: Install-Module $module"
|
||||
return $null
|
||||
}
|
||||
}
|
||||
|
||||
# Csatlakozás a Graph API-hoz kliens hitelesítő adatokkal
|
||||
# A -Scopes paraméterben az alkalmazásengedélyek neveit kell megadni
|
||||
$connectResult = Connect-MgGraph -TenantId $TENANT_ID -ClientId $CLIENT_ID -ClientSecret $CLIENT_SECRET -Scopes $SCOPES -ErrorAction Stop
|
||||
|
||||
if ($connectResult) {
|
||||
Write-Host "Sikeresen csatlakozott a Graph API-hoz." -ForegroundColor Green
|
||||
# Lekérjük az Access Token-t
|
||||
$token = (Get-MsalToken).AccessToken
|
||||
return $token
|
||||
} else {
|
||||
Write-Error "Nem sikerült csatlakozni a Graph API-hoz."
|
||||
return $null
|
||||
}
|
||||
}
|
||||
catch {
|
||||
Write-Error "Hiba történt a Graph API-hoz való csatlakozás során: $($_.Exception.Message)"
|
||||
Write-Host "Kérjük, ellenőrizze a konfigurációs beállításokat (TENANT_ID, CLIENT_ID, CLIENT_SECRET) és az alkalmazásengedélyeket az Azure AD-ben." -ForegroundColor Yellow
|
||||
return $null
|
||||
}
|
||||
}
|
||||
|
||||
# ==============================================================================
|
||||
# FŐ LOGIKA
|
||||
# ==============================================================================
|
||||
function Main {
|
||||
$accessToken = Connect-GraphAPI
|
||||
|
||||
if (-not $accessToken) {
|
||||
Write-Error "Nem sikerült Access Token-t szerezni. Kilépés."
|
||||
return
|
||||
}
|
||||
|
||||
Write-Host "Access Token sikeresen lekérve. Kész a Graph API hívásokhoz." -ForegroundColor Green
|
||||
# Itt fogjuk később implementálni az e-mailek feldolgozását
|
||||
}
|
||||
|
||||
# Fő függvény meghívása
|
||||
Main
|
||||
Reference in New Issue
Block a user