PRTG per Powershell bedienen

PRTG (https://www.de.paessler.com/prtg), mein Lieblingstool zur Netzwerküberwachung, hatte für mich bisher immer den Nachteil, das man es nicht so richtig auf der Kommandozeile bedienen konnte. Immer mal wieder kam die Aufgabe eine bestimmten Sensor zu allen bestehenden Server- Objekten hinzuzufügen. Kann man von Hand machen. Ist aber bei vielen Servern echt lästig.

Kurze Suche fördert das Projekt PrtgApi bei GitHub zu Tage. Gut gepflegt und aktuell lässt es praktisch keine Wünsche offen und mir das Herz höher schlagen.
Nachdem ich mir die richtigen Dateien zu einem Powershell- Modul zusammen kopiert und installiert hatte war das hinzufügen eines Sensors zu allen Servern eine Sache von ein paar Minuten:

import-module prtgapi 
connect-prtgserver servername

# Quelle
$quellSensor = get-device quellServer | get-sensor Quelle

# Und auf ein anderes Device klonen
get-device zielServer | clone-object -SourceID $quellSensor.id

# jetzt noch starten:
get-device zielServer | get-sensor Quelle | Resume-Object

Das geht natürlich auch mit einem Array an Zielservern…. sehr cool.
Die API kann noch viel mehr und es lohnt sich da mal etwas tiefer zu graben.

Mehr

PDFs aus Worddateien im Explorer erstellen

Microsoft Word hat ja seit einiger Zeit eine Möglichkeit direkt aus der Anwendung ein PDF zu erzeugen. Das ist praktisch und macht Adobe Acrobat für meine Zwecke komplett überflüssig. Ich hatte jedoch heute das Problem, das ich aus einer großen Anzahl von Dokumenten PDFs erzeugen wollte. Alle nacheinander öffnen und als PDF speichern kam mir so 90er vor. 😉

Nach kurzer Suche im Internet bin ich auf einen coolen Artikel hier gestoßen. Ist nichts weiter als ein kleines Makro in der „normal.dotx“ des Benutzers und ein Registry Key der über „HKEY_Classes_Root“ einen Eintrag in das Rechts- Klick- Menu einer Word- Datei zaubert. Der ruft dann das Makro auf, welches die Datei als PDF speichert. Sehr elegant. Man kann auch mehrere Dateien selektieren und sie konvertieren. Fast genau was ich wollte, bis auf zwei Kleinigkeiten:

  1. ich habe Office 2016 (nicht 2013 wie im Beispiel)
  2. ich will das pro Benutzer haben und nicht pro Rechner

Hier die korrigierten Dateien um meine Problem zu lösen:

Makro in der „normal.dotx“ des Benutzers:

Sub ExportToPDFext()
ChangeFileOpenDirectory ThisDocument.Path
ActiveDocument.ExportAsFixedFormat _
OutputFileName:=Left(ActiveDocument.FullName, InStrRev(ActiveDocument.FullName, ".")) + "pdf", _
ExportFormat:=wdExportFormatPDF, _
OpenAfterExport:=False, _
OptimizeFor:=wdExportOptimizeForPrint, _
Range:=wdExportAllDocument, _
From:=1, _
To:=1, _
Item:=wdExportDocumentContent, _
IncludeDocProps:=True, _
KeepIRM:=True, _
CreateBookmarks:=wdExportCreateNoBookmarks, _
DocStructureTags:=True, _
BitmapMissingFonts:=True, _
UseISO19005_1:=False
Application.Quit SaveChanges:=wdDoNotSaveChanges
End Sub

Registry- Einträge für „Als PDF speichern“ pro Benutzer:

Windows Registry Editor Version 5.00
 
[HKEY_CURRENT_USER\Software\Classes\Word.Document.8\shell\SavePDFhere]
@="Als PDF speichern"
 
[HKEY_CURRENT_USER\Software\Classes\Word.Document.8\shell\SavePDFhere\command]
@="\"C:\\Program Files\\Microsoft Office\\Office16\\WINWORD.EXE\" /mExportToPDFext /q \"%1\""
 
[HKEY_CURRENT_USER\Software\Classes\Word.Document.12\shell\SavePDFhere]
@="Als PDF speichern"
 
[HKEY_CURRENT_USER\Software\Classes\Word.Document.12\shell\SavePDFhere\command]
@="\"C:\\Program Files\\Microsoft Office\\Office16\\WINWORD.EXE\" /mExportToPDFext /q \"%1\""

Achtung: Das ist für die 64-Bit Version von Office 2016, für die 32-Bit Version die Pfade in der Registry entsprechend anpassen.

Mehr