Forum

PowerShell: Audit P...
 
Bildirimler
Hepsini Temizle

PowerShell: Audit Printer Event Logs

5 Yazılar
3 Üyeler
0 Likes
722 Görüntüleme
(@ozgur_sahin)
Gönderiler: 42
Trusted Member
Konu başlatıcı
 
Merhaba CozumPark.
Yukardaki linkden aldigim , asagidaki kodlari biraz olsun aciklamaniz mumkun mu?
Asil amacim .evtx(event viewer) in kendi dosyasinda sorgu cumleleri yazabilmek
XML olarak kopyalayip sql e atiyorum ve orda sql sorgulari yaziyorum
ama tabi bu durumda her seferinde(yeni raporlar elde etmek istedigimde) yeni xml ler olusturup sql e atmak zorunda kaliyorum
%SystemRoot%\System32\Winevt\Logs\Application.evtx log dosyasinda 307 numarali id uzerinde calismak istiyorum 
Tesekkurler... 

################################################################

#                                                              #
#   Scan Windows Print Server Logs for activity                #
#   from previous month                                        #
#   Created by B. Bickett                                      #
#   http://mywinsysadm.wordpress.com                           #
#   Date 8/23/12                                               #
#                                                              #
################################################################
$dte = Get-Date
$m = $dte.month
$cmonth = Get-Date -UFormat %m
$d = $dte.day
$cday = Get-Date -UFormat %d
$cyear = $dte.year
$filename = "ColorPrinterLog_" + $cyear + "_" +$cmonth + ".csv"
$startdatefull = ($dte).AddDays(-30)
$startdate = ($startdatefull).ToShortDateString()
$enddate = ($dte).ToShortDateString()
"Job Name: Monthly Color Printer Log"
"Start Date: " + $startdate
"End Date: " + $enddate
Write-Host " " | Out-File "C:\$filename"
Write-Host "Scanning Archived Printer Event Logs..."
Write-Host
Get-ChildItem -include Archive-Microsoft-Windows-PrintService%4Operational-$cyear-$cmonth*.evtx -Path C:\Windows\System32\winevt\Logs -recurse |
ForEach-Object {
"Parsing $($_.fullname)`r`n"
Try
{ $events = get-winevent -FilterHashTable @{Path=$_.fullname; ID=307; StartTime=$startdate; EndTime=$enddate ;} |
where {($_.Message -like "*printer1*") -or ($_.Message -like "*printer2*") -or ($_.Message -like "*printer3*") -or ($_.Message -like "*printer4*") -or ($_.Message -like "*printer5*") -or ($_.Message -like "*printer6*") } |
select timecreated,message |
Export-Csv "C:\Temp.csv" -Encoding ASCII -notype
[System.IO.File]::ReadAllText("C:\Temp.csv") | Out-File -Append "C:\$filename"
}
Catch [System.Exception] {"No results in current log"}
}
Write-Host
Write-Host "Scanning Complete!"
Write-Host
 
Gönderildi : 13/12/2012 18:18

Hakan Uzuner
(@hakanuzuner)
Gönderiler: 32987
Illustrious Member Yönetici
 

Özgür bey sanırım bu konular ile pek ilgilenen olmamış aramızda, siz ilerleyebildiniz mi acaba ?

Danışman - ITSTACK Bilgi Sistemleri
****************************************************************
Probleminiz Çözüldüğünde Sonucu Burada Paylaşırsanız.
Sizde Aynı Problemi Yaşayanlar İçin Yardım Etmiş Olursunuz.
Eğer sorununuz çözüldü ise lütfen "çözüldü" olarak işaretlerseniz diğer üyeler için çok büyük kolaylık sağlayacaktır.
*****************************************************************

 
Gönderildi : 01/01/2013 15:11

(@ozgur_sahin)
Gönderiler: 42
Trusted Member
Konu başlatıcı
 

Yok istedigim seyi basaramamistim . print report icin evtx leri kullanamadim malesef.
rapor lazim olunca gerekli event leri export edip exel de sorgudan geciriyorum - ugrastiriyor ama neyse ....

 
Gönderildi : 30/08/2013 19:30

(@yusufozturk)
Gönderiler: 147
Estimable Member
 

Merhaba,

Aşağıdaki gibi her satırı açıklamaya çalıştım 🙂 Eğer anlaşılmayan bir yer var ise hala yardımcı olabilirim.

################################################################

#                                                              #

#   Scan Windows Print Server Logs for activity                #

#   from previous month                                        #

#   Created by B. Bickett                                      #

#   http://mywinsysadm.wordpress.com                           #

#   Date 8/23/12                                               #

#                                                              #

################################################################

# Bugunun tarihini getirir

$dte = Get-Date

# Bu ayi getirir

$m = $dte.month

# Ay formatini degistirir

$cmonth = Get-Date -UFormat %m

# Bugunu getirir

$d = $dte.day

# Bugunun formatini degistirir

$cday = Get-Date -UFormat %d

# Bu yili getirir

$cyear = $dte.year

# Dosya adini olusturmus CSV icin

$filename = "ColorPrinterLog_" + $cyear + "_" +$cmonth + ".csv"

# Gecen ayin tarihini getirmis

$startdatefull = ($dte).AddDays(-30)

# Gecen ayin formatini degistirmis

$startdate = ($startdatefull).ToShortDateString()

# Bugunun formati farkli

$enddate = ($dte).ToShortDateString()

# Isin adi 🙂

"Job Name: Monthly Color Printer Log"

# Baslama zamani

"Start Date: " + $startdate

# Bitis zamani

"End Date: " + $enddate

# C:\$filename içersini bosaltiyor

Write-Host " " | Out-File "C:\$filename"

Write-Host "Scanning Archived Printer Event Logs..."

Write-Host

# C:\Windows\System32\winevt\Logs icinde ismi Archive-Microsoft-Windows-PrintService%4Operational-$cyear-$cmonth*.evtx seklinde olan tum evtxleri almis ve bunlari foreach'e sokmus

Get-ChildItem -include Archive-Microsoft-Windows-PrintService%4Operational-$cyear-$cmonth*.evtx -Path C:\Windows\System32\winevt\Logs -recurse |

ForEach-Object {

"Parsing $($_.fullname)`r`n"

Try

# Tum eventleri getiriyor ve bunlari Path, ID, Starttime ve Endtime seklinde hashtable yapiyor, daha iyi gorunum icin

{ $events = get-winevent -FilterHashTable @{Path=$_.fullname; ID=307; StartTime=$startdate; EndTime=$enddate ;} |

# Message olan kisimlarin icerisinde printer1, printer2 vs gibi kelimeler gecen eventleri aliyor sadece

where {($_.Message -like "*printer1*") -or ($_.Message -like "*printer2*") -or ($_.Message -like "*printer3*") -or ($_.Message -like "*printer4*") -or ($_.Message -like "*printer5*") -or ($_.Message -like "*printer6*") } |

# Bu gelen mesajlardan sadece timecreated ve message icerigini aliyor

select timecreated,message |

# Bunlari temp.csv icersine kaydediyor

Export-Csv "C:\Temp.csv" -Encoding ASCII -notype

# CSV icerisini okuduktan sonra C:\$filename icine ekliyor. Bu kisim gereksiz olmus sanki, dogrudan da yazabilirdi. CSV convert yapamamis galiba arkadas.

[System.IO.File]::ReadAllText("C:\Temp.csv") | Out-File -Append "C:\$filename"

}

# Eger hic bir sey yakalayamazsa 

Catch [System.Exception] {"No results in current log"}

}

Write-Host

Write-Host "Scanning Complete!"

Write-Host 

 
Gönderildi : 02/09/2013 11:56

Hakan Uzuner
(@hakanuzuner)
Gönderiler: 32987
Illustrious Member Yönetici
 

Eline sağlık Yusuf.

Danışman - ITSTACK Bilgi Sistemleri
****************************************************************
Probleminiz Çözüldüğünde Sonucu Burada Paylaşırsanız.
Sizde Aynı Problemi Yaşayanlar İçin Yardım Etmiş Olursunuz.
Eğer sorununuz çözüldü ise lütfen "çözüldü" olarak işaretlerseniz diğer üyeler için çok büyük kolaylık sağlayacaktır.
*****************************************************************

 
Gönderildi : 02/09/2013 14:34

Paylaş: