The estimated reading time 3 minutes
Windows Fileserver Ressource Manager (FSRM) Dateiendungen updaten aus mehreren TXTs verschiedene Listen (Teil2)
In Teil 1 habe ich mich mit dem Thema Import aus einer TXT Datei beschäftigt. Da es aber inzwischen verschiedene Endungen gibt und diese immer wieder nachgelegt werden müssen, habe ich mit damit beschäftigt, wie man verschiedene TXTs gleichzeitig einlesen und dann alle Endungen aus den Dateien in den FSRM bekommt.
Zum besseren Verständnis empfehle ich Teil 1 hierzu ebenfalls zu lesen.
Nun aber zum Wesentlichen:
Hier das Skript (getestet auf Windows Server 2012R2 und 2016)
https://github.com/blog-it-koehler-com/import-ransomware-extensions-fsrm
<# .SYNOPSIS script is used to import and summarize multiple txt files with file extensions in windows fsrm (fileserver ressource manager) .DESCRIPTION the script imports the content of txt files to fsrm. the txt files should look like the sample txt files in github.They have to be located in the same directory. This directory should be defined in variable. Another variable is the filegroupname, you can see this in fsrm .EXAMPLE - .Notes - this script does not create filegroup or filescreens etc.the current extensions configured will be saved in a legay txt file with date further information on my blog: http://blog.it-koehler.com --------------------------------------------------------------------------------- Script: import-fileextensions-v02.ps1 Author: A. Koehler; blog.it-koehler.com ModifyDate: 21/01/2017 Usage: Version: 0.2 --------------------------------------------------------------------------------- #> #define variable #path containing txt files (without '\' at the end!) $txtfilepath = 'C:\Temp\ransomware' #fsrm filegroup detecting ransomware $filegroupname = 'Ransomware' #########beginning of the script######## $date=((Get-Date).ToString('yyyy-MM-dd-HH-mm-ss')) #export the existing extensions to legacy txt files $legacyfile = (Get-ChildItem $txtfilepath -Recurse -Include '*.txt') | Where-Object {$_.Name -like "*-legacy-ext*"} #check if legacy txt file available, if not create it, otherwise import txt files if(!$legacyfile) { (Get-FsrmFileGroup -Name $filegroupname).IncludePattern | Out-File "$txtfilepath\$date-legacy-ext.txt" } #import content from txt files $txtfiles = (Get-ChildItem $txtfilepath -Recurse -Include '*.txt').Name #import content from all txt files inside directory foreach ($txtfile in $txtfiles) { $txtfilescomplpath = $txtfilepath+'\'+ $txtfile #convert all content to lower $fileext += @((Get-Content $txtfilescomplpath).ToLower()) } #sort and eliminate double entries $compareext = $fileext | Sort-Object -Unique Set-FsrmFileGroup -Name $filegroupname -IncludePattern ($compareext)
Es müssen zwei Variablen gesetzt werden nämlich „filepath“ (Pfad zu den TXT Dateien) und „filegroupname“ am einfachsten ist es die PowershellISE auf dem Dateiserver zu öffnen und hier das ganze Skript dort einfügen.
HINWEIS: es sollten keine anderen TXT Dateien innerhalb dieses Ordners liegen, da der Inhalt sonst ebenfalls eingelesen wird.
In meinem Fall liegen die angesprochenen TXT Dateien unter „C:\temp\ransomware“.
Ich habe absichtlich mehrmals die gleichen Endungen integriert um zu testen, ob die gleiche Endung nur einmal eingetragen wird (auch mit Groß- und Kleinschreibung). Das Skript unterscheidet die Endungen anhand der Zeilen, also maximal eine Endung pro Zeile!
Außerdem ist die Dateigruppe „Ransomware“ bereits erstellt, dies beinhaltet einen Eintrag.
Nun habe ich die PowershellISE auf dem Dateiserver geöffnet und das komplette Skript eingefügt. (Als Administrator).
Nun das Skript mit der grünen Pfeiltaste auslösen und danach das Ergebnis kontrollieren.
Im angegebenen Ordner lässt sich nun eine neue TXT Datei finden, in der die vorherigen Endungen eingetragen sind.
Somit könne mehrere TXT Dateien (Listen verschiedener Anbieter) bequem eingelesen und eben auch verglichen werden. Doppelte Endungen bzw. Dateien werden nicht mehrmals eingetragen.
Fragen und Anregungen gerne in die Kommentare posten.
Super! Funktioniert ohne Probleme 🙂 … Dankeschön!