netzwerkdude
Goto Top

PowerShell Skripte für das Datei Kontextmenü erstellen - am Beispiel VirusTotal API

Moin,

wenn ihr ein Tool habt das mit einer Datei "irgendwas" macht und das Tool von Usern benutzt werden soll die keinen Bock auf die Kommandozeile haben, kann man PowerShell .ps1 skripte auf eine angeklickte Datei über das Rechtsklick-Kontextmenü anwenden.

Als erstes erstellen wir das Kontextmenü:
Im Regedit unter
Computer\HKEY_CLASSES_ROOT\*\shell\
erstellt man einen Schlüssel mit beliebigen Namen, als Standardwert kommt der Name des zukünftigen Tools rein, hier "VirusTotalCheck"
nun erstellt ihr unter dieser Schlüssel einen weiteren mit dem namen "command"
Hier kommt als Standardwert der Befehl der ausgeführt werden soll beim klick:
(Führe Powershell 7 aus, das Skript unter dem Pfad und als Parameter übergebe die angeklickte Datei (%V)

So schauts aus:
clipboard01

Und schon erscheint es im Kontextmenü:
clipboard02

Hier als Regdatei zum direkt importieren:
(Hier das ganze escaping beachten!)


Jetzt können wir also auch das Skript in D:\Code\006_KleineTools\VirusTotalChecker.ps1 ablegen, hier der Code (bitte nicht allzu representativ nehmen, habe den mal schnell gehackt um was sinnvolles zu machen face-smile )
bitte eueren eigenen API Key von VirusTotal eintragen in die Variable $APIKey in Zeile 7


MFG
N-Dude

PS: Der Code läuft nicht mit PowerShell 5.x, das liegt an der Invoke-Restmethod anweisung die 7er features benutzt. Außerdem wird die "depricated" v2 VirusTotal API benutzt, aber die neue ist wohl noch Beta - versteh einer Google....

Content-Key: 596999

Url: https://administrator.de/contentid/596999

Printed on: December 2, 2022 at 23:12 o'clock

Member: TK1987
TK1987 Aug 17, 2020 updated at 14:18:03 (UTC)
Goto Top
Moin,

Zitat von @NetzwerkDude:
Im Regedit unter
Computer\HKEY_CLASSES_ROOT\*\shell\
erstellt man einen Schlüssel mit beliebigen Namen, als Standardwert kommt der Name des zukünftigen Tools rein, hier "VirusTotalCheck"
Diese Methode hat jedoch einen Nachteil: Es kann immer nur eine Datei als Argument an das Skript übergeben werden (bzw. wird bei einer Multiselektion für jede Datei eine neue Instanz geöffnet).

Eine Alternative hierzu, die es auch ermöglicht mehrere Dateien als Argumente an das Skript zu übergeben, ist der SendTo Ordner.

1) Explorer Öffnen und in der Adressleiste shell:sendto eingeben (man landet im Ordner %userprofile%\AppData\Roaming\Microsoft \Windows\SendTo)
2) Hier nun eine Verknüpfung des Powershell-Skripts anlegen; und das Verknüpfungsziel wie folgt abändern

Nun kann man im Explorer nach belieben mehrere Dateien selektieren und über das Kontextmenü "Senden an" als Array an das Skript übergeben.

sendto

Die Argumente sind dann (sofern nicht unter Parameter eine andere Variable definiert wurde), unter der Variable $Args zu erreichen.

Gruß Thomas
Member: NetzwerkDude
NetzwerkDude Aug 17, 2020 at 14:04:55 (UTC)
Goto Top
Danke für den Hinweis face-smile
Member: TK1987
TK1987 Aug 17, 2020 at 14:09:32 (UTC)
Goto Top
Aber gerne doch face-wink