{"id":15,"date":"2021-11-29T21:22:49","date_gmt":"2021-11-29T20:22:49","guid":{"rendered":"https:\/\/christopher-hill.de\/?p=15"},"modified":"2021-11-29T21:22:49","modified_gmt":"2021-11-29T20:22:49","slug":"bereinigung-exchange-logfiles-mit-powershell","status":"publish","type":"post","link":"https:\/\/christopher-hill.de\/index.php\/2021\/11\/29\/bereinigung-exchange-logfiles-mit-powershell\/","title":{"rendered":"Bereinigung Exchange LogFiles mit PowerShell"},"content":{"rendered":"\n<p>Volllaufende Dateisysteme sind der Traum jedes Admins. Wohl dem, der ein entsprechendes Monitoring auf eigenen oder Kundensystemen einsetzt und rechtzeitig gewarnt wird. <\/p>\n\n\n\n<p>Nicht immer aber ist einem dieser Komfort so ohne weiteres gegeben und ohnehin ist proaktives Management solch trivialer Schwachpunkte einem reaktiven Warten auf einen roten Sensor vorzuziehen.<\/p>\n\n\n\n<p>Irgendwie ist es ja keine Neuerung, in solchen F\u00e4llen \u00fcberrascht es mich aber in frustrierender Weise jedesmal wieder, dass Microsoft auch in 2021 noch keinen vern\u00fcnftigen Logrotate Mechanismus f\u00fcr viele seiner Produkte implementiert hat. So wie es in der Linuxwelt ja schon seit tr\u00f6lftausend Jahren selbstredend ist. <\/p>\n\n\n\n<p>Dem den morgendlichen Kaffeestartup unterbrechenden, ersch\u00fctterenden Kundenanruf &#8222;seit gestern kommen keine Mails mehr rein&#8220; schafft meistens schon folgendes simples PowerShell Skript (ausgef\u00fchrt als geplanter Task) Abhilfe:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$LogPaths = @('C:\\Program Files\\Microsoft\\Exchange Server\\V15\\Logging','C:\\inetpub\\logs')\nGet-ChildItem -Path $LogPaths  -Recurse -Include '*.log' | \n    Where-Object  { $_.LastWriteTime -lt (Get-Date).AddDays(-3) }  | \n    Remove-Item -Force |\n    Out-Null <\/code><\/pre>\n\n\n\n<p>Frank Z\u00f6chling, seines Zeichens einer der bedeutensten deutschen Blogger im Bereich Microsoft Exchange hat vor kurzem &#8211; in Kollaboration mit dem mir bis dato unbekannten Ali Tajran (man m\u00f6ge mir dies verzeihen) &#8211; das ganze ein St\u00fcck weitergetrieben und das ganze um einige andere LogDirs, Confirmations und ein klein bi\u00dfchen Errorhandling erweitert. <\/p>\n\n\n\n<p>Und weil ich&#8217;s mal wieder nicht sein lassen konnte, musste ich das ganze etwas aufr\u00e4umen, besser lesbar machen (f\u00fcr mich) und ein paar unsch\u00f6ne Write-Hosts etc ersetzen:<\/p>\n\n\n\n<p><a href=\"https:\/\/github.com\/ChristopherCHill\/remove-exchangelogs\">https:\/\/github.com\/ChristopherCHill\/remove-exchangelogs<\/a><\/p>\n\n\n\n<p>Und weil ich&#8217;s auch nicht lassen konnte habe ich das ganze auf Github hochgeladen, weil ich &#8211; trotz vergleichsweise recht oberfl\u00e4chlicher git-Kenntnisse &#8211; scheinbar keine Flatulenz ohne Versionskontrolle mehr von mir gebe. <\/p>\n\n\n\n<p>Und wer der Ansicht ist, ich h\u00e4tte den Spaghetticode ja auch gleich mal in ein paar Funktionen packen k\u00f6nnen hat sicher recht&#8230;vielleicht reiche ich das ja noch nach&#8230;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Links:<\/h2>\n\n\n\n<p><a href=\"https:\/\/www.frankysweb.de\/exchange-logfiles-mit-powershell-bereinigen\/\">https:\/\/www.frankysweb.de\/exchange-logfiles-mit-powershell-bereinigen\/<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/www.alitajran.com\/cleanup-logs-exchange-2013-2016-2019\/\">https:\/\/www.alitajran.com\/cleanup-logs-exchange-2013-2016-2019\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Volllaufende Dateisysteme sind der Traum jedes Admins. Wohl dem, der ein entsprechendes Monitoring auf eigenen oder Kundensystemen einsetzt und rechtzeitig gewarnt wird. Nicht immer aber ist einem dieser Komfort so ohne weiteres gegeben und ohnehin ist proaktives Management solch trivialer Schwachpunkte einem reaktiven Warten auf einen roten Sensor vorzuziehen. Irgendwie ist es ja keine Neuerung, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-15","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/christopher-hill.de\/index.php\/wp-json\/wp\/v2\/posts\/15","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/christopher-hill.de\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/christopher-hill.de\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/christopher-hill.de\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/christopher-hill.de\/index.php\/wp-json\/wp\/v2\/comments?post=15"}],"version-history":[{"count":1,"href":"https:\/\/christopher-hill.de\/index.php\/wp-json\/wp\/v2\/posts\/15\/revisions"}],"predecessor-version":[{"id":16,"href":"https:\/\/christopher-hill.de\/index.php\/wp-json\/wp\/v2\/posts\/15\/revisions\/16"}],"wp:attachment":[{"href":"https:\/\/christopher-hill.de\/index.php\/wp-json\/wp\/v2\/media?parent=15"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/christopher-hill.de\/index.php\/wp-json\/wp\/v2\/categories?post=15"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/christopher-hill.de\/index.php\/wp-json\/wp\/v2\/tags?post=15"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}