This commit is contained in:
2026-03-16 12:31:44 +01:00
parent 78a88900d8
commit 40fa971f06
10 changed files with 34 additions and 738 deletions

View File

@@ -5,47 +5,37 @@ Egy központi, felhőalapú (O365) platform létrehozása az IT részleg összes
## 2. Webhely Típusa ## 2. Webhely Típusa
- **Típus:** SharePoint Team Site (**Privát**) - **Típus:** SharePoint Team Site (**Privát**)
- **Név javaslat:** `IT Internal Repository` - **Név:** `IT Internal Repository`
- **Hozzáférés:** Kizárólag az IT csapat tagjai számára. - **Hozzáférés:** Kizárólag az IT csapat tagjai számára (Tulajdonosok és Tagok).
## 3. Javasolt Struktúra (Dokumentumtárak) ## 3. Végleges Struktúra (Dokumentumtárak)
A meglévő helyi struktúra alapján az alábbi könyvtárakat hozzuk létre: A SharePoint felületen kialakított mappaszerkezet:
- **01_Infrastructure (Infrastruktúra):** - **01_Infrastructure:** Postfix konfigok, Switch beállítások, hálózati rajzok.
- Switch konfigok (`Conf/Switch/`), szerver beállítások (`Conf/aps.local/`), hálózati rajzok. - **02_Software:** Telepítőfájlok (.zip, .exe), szoftveres dokumentációk.
- *Metaadat javaslat:* Eszköz típusa, Gyártó. - **03_Knowledge_Base:** Általános IT útmutatók és Markdown (.md) dokumentumok.
- **02_Development_Projects (Projektek):** - **04_Automation_Scripts:** Python és Bash szkriptek gyűjteménye.
- Docker fájlok, n8n munkafolyamatok, Python fejlesztések (`Dev/`). - **05_Archive:** Régi mentések és logok.
- *Cél:* Fejlesztési dokumentáció és kódminták.
- **03_Knowledge_Base (Wiki / SOP):**
- Telepítési útmutatók, hibajegy-megoldások, folyamatleírások (`Doc/`).
- *Formátum:* SharePoint Pages vagy Markdown.
- **04_Automation_Scripts (Szkriptek):**
- Bash, PowerShell, Python szkriptek gyűjteménye (`Scripts/`).
- *Előny:* Felhőből bárhonnan elérhető kódminták.
- **05_Archive (Archívum):**
- Régi backupok, kifutott projektek (`Backup/`).
## 4. Technikai Funkciók (IT Fókusz) ## 4. Technikai Funkciók (IT Fókusz)
- **Verziókezelés:** Minden fájl módosítása visszakövethető (SharePoint Version History). - **SOP (Wiki) Oldalak:** Modern SharePoint oldalakat használunk a folyamatok leírására (német nyelven a kollégáknak).
- **OneDrive Sync:** A fájlok helyi (Windows/Linux) szerkesztése és automatikus szinkronizációja (VS Code ajánlott). - **Code Snippets:** A kódminták szintaxis-kiemeléssel jelennek meg az oldalakon.
- **Markdown és Plain Text (.txt) Stratégia:** - **Verziókezelés:** Minden fájl módosítása visszakövethető.
- A technikai dokumentáció (.md) és a nyers konfigurációk (.txt, .conf, .sh) eredeti formátumban maradnak. - **OneDrive Sync:** Windows/WSL környezetből való kényelmes feltöltés és szinkronizáció.
- A switch konfigok (.txt) közvetlenül olvashatók és kereshetők a SharePoint webes felületén.
- A verziókövetés lehetővé teszi a konfigurációk közötti különbségek követését.
- A képek megjelenítése miatt a komplex dokumentációhoz a helyi szerkesztés (VS Code + OneDrive) ajánlott.
- **Teams Integráció:** ## 5. Elvégzett és Következő Lépések
- A SharePoint webhelyhez kapcsolódó Teams csapat automatikusan létrejön.
- A dokumentumtárak (Libraries) külön fülként (Tab) hozzáadhatók a Teams csatornákhoz.
- Gyors elérés: Fájlok megtekintése és alapvető szerkesztése közvetlenül a Teams felületén.
- Központi keresés: A Teams keresője megtalálja a SharePointon tárolt konfigokat és leírásokat is.
## 5. Következő Lépések (Teendők)
- [x] Célközönség meghatározása (Csak IT). - [x] Célközönség meghatározása (Csak IT).
- [ ] Üres SharePoint Site létrehozása (Privát Team Site). - [x] Privát SharePoint Team Site létrehozása.
- [ ] Dokumentumtárak (Libraries) létrehozása a fenti struktúra szerint. - [x] Dokumentumtárak (Libraries) kialakítása (01-05).
- [ ] Kezdeti adatok feltöltése (OneDrive szinkronizációval). - [x] Kezdőlap (Dashboard) testreszabása (Hero, Schnelllinks).
- [x] Első SOP (Wiki) oldalak létrehozása (Német nyelven).
- [ ] Teljes adatkészlet feltöltése (OneDrive szinkronizáció befejezése).
- [ ] Teams integráció véglegesítése (Tab-ok hozzáadása).
## 6. Megvalósított SOP Oldalak (2026.03.16)
- **SOP: Automatisierter PDF-Import aus O365 (v2.2)**
- **SOP: Bereinigung alter Datensätze (delete_old_records.py)**
- **SOP: Konfiguration Postfix SMTP Relay (APS-SMTP01)**
--- ---
*Ez a dokumentum a Gemini CLI segítségével készült, és a projekt aktuális állapotát tükrözi.* *Ez a dokumentum a Gemini CLI segítségével készült, és a projekt aktuális állapotát tükrözi.*

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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

View File

@@ -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."

View File

@@ -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"

View File

@@ -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"

View File

@@ -1,12 +1,16 @@
# Drucklog_MySQL.ps1 # Drucklog_MySQL.ps1
# Install-Module MySQLCmdlets # Install-Module MySQLCmdlets
# Nyomtatási napló export MySQL adatbázisba # 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 # Beállítások
$logName = "Microsoft-Windows-PrintService/Operational" $logName = "Microsoft-Windows-PrintService/Operational"
$mysqlHost = "10.101.0.82" $mysqlHost = "10.102.1.65"
$mysqlUser = "druckloguser" $mysqlUser = "svc.druckerlog"
$mysqlPassword = "Test123#" $mysqlPassword = "ctqBirh3eEbakLb96Ks1"
$mysqlDatabase = "drucklog" $mysqlDatabase = "drucklog"
$quelleServer = $env:COMPUTERNAME # vagy: "Szerver01" $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" # 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 [Reflection.Assembly]::LoadFrom("C:\Program Files (x86)\MySQL\MySQL Connector NET 9.4\MySql.Data.dll") | Out-Null
# Kapcsolódás # Kapcsolódás
$connectionString = "server=$mysqlHost;user id=$mysqlUser;password=$mysqlPassword;database=$mysqlDatabase;SslMode=none" $connectionString = "server=$mysqlHost;user id=$mysqlUser;password=$mysqlPassword;database=$mysqlDatabase;SslMode=none"
$connection = New-Object MySql.Data.MySqlClient.MySqlConnection($connectionString) $connection = New-Object MySql.Data.MySqlClient.MySqlConnection($connectionString)

View File

@@ -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