Author Archives: BlackBoxCoder

Script: Eigene PowerShell ISE – Addons erstellen [PowerShell]

Hallo,

ich möchte euch zeigen, wie ihr eigene „kleine“ Addons für die PowerShell ISE erstellen könnt. Dazu habe ich mir mal ein kleines Beispiel-Addon ausgedacht. Bevor ich ein Script erstelle, schreibe ich zunächst einen Kommentarblock, dieser ist systematisch immer gleich aufgebaut und sieht wie folgt aus:

Da ich diesen Block nicht immer von Hand schreiben möchte und den Text kopieren finde ich auch etwas unpraktisch, baue ich mir dafür eine Funktion, die diesen Textblock in meine geöffnete Datei im ISE kopiert:

Und zusätzlich wird auch das Datum dynamisch erzeugt!

Nun will ich aber nicht die Funktion aufrufen müssen, dies soll am besten via Tastenkürzel passieren oder ich klicke ein Menü an. Deswegen werden wir diese Funktion auch nun in unsere Addons-Liste in einem Submenu erstellen. Dies sieht wie folgt aus:

Im ersten Schritt wird ein Submenu namens Helper erstellt in diesem wird dann ein Eintrag namens Get-CommentBlock erstellt, danach wird auf die Funktion gezeigt und ein Tastenkürzel vergeben (ctrl+alt+c).

Dies sieht dann in der ISE so aus:
ise-addons

Beim nächsten Start der PowerShell ISE ist dies nun aber leider wieder verschwunden, verhindert wird dies, indem wir den Code in die Datei profile.ps1 schreiben, diese wird bei jedem Start von der PowerShell ISE geladen. Zu finden ist diese Datei unter C:\Users\<Username>\Documents\WindowsPowerShell\profile.ps1 sollte die Datei nicht vorhanden sein, so kann man sie dort einfach erstellen.

Ich hoffe ich konnte euch die Addons in der PowerShell ISE etwas näher bringen.

In dem Sinne: Frohes Addonen.

 

 

Script: Exchange-Snapins und andere Module in PowerShell laden [PowerShell]

Hallo,

bevor man auf die spezifischen CMDlets des Exchange-Servers zugreifen kann, müssen auf dem Server zuerst die Exchange Management Tools (EMT) installiert werden (sofern noch nicht vorhanden) und anschließend die Exchange-Snapins in die Session importiert werden.

Dies kann man für die Versionen 2007, 2010 und 2013 wie folgt machen:

Gefreut hätte ich mich über eine einheitliche und sinnvolle Namenskonvention der Snapins, aber dann soll es eben nicht so sein.

Leider unterteilen sich manche zusätzlichen CMDlets in Snapins und andere in Module. Beispielsweise kann man Active-Directory-Cmdlets nur via Modul importieren.

Um quasi alle zu laden, könnte man via Get-Module -ListAvailable sich alle Module die einbindbar sind anzeigen lassen und einzelnen einbinden.
Folgendes geht auch mit den Snapins via: Get-PSSnapin -Registered. Um nun alle Fliegen mit einer Klappe zu erschlagen, können wir alles direkt importieren, sprich jedes Snapin und jedes Modul:

Aber aus Zeit und Effektivitätsgründen würde ich davon abraten, wollte es aber dennoch gerne anmerken.

In dem Sinne: Frohes importieren.

 

 

Script: Bestimmte Zeile einer Text-Datei auswählen [PowerShell]

Hallo,

ich wollte letztens eine zufällige Zeile einer Textdatei auswählen.
Um das zu erreichen, muss man erst verstehen, wie man auf eine bestimmte Zeile zugreifen kann und das möchte ich euch zeigen.

Als erstes holen wir uns den gesamten Inhalt einer Textdatei:

Nun steht der Inhalt der Text Datei: D:\Coding\Testfile.txt in der Variable Inhalt.
Nun wollen wir die dritte Zeile der Textdatei lesen:

Wenn wir jetzt aber gerne eine zufällige Zeile haben müssen wir den Befehl Get-Random in den Index schreiben. Hier ist aber zu beachten, dass wir den Index nicht überschreiten dürfen. Dafür nutzen wir den Parameter -Maximum, was wir jetzt noch wissen müssen, wie viele Zeilen hat denn die ausgewählte Textdatei.
Das können wir mit dem Befehl Measure-Object in Erfahrung bringen, dort haben wir den Parameter -Line. Zusammengefügt sieht das nun so aus:

Ein Dank geht raus an Martin Binder, der die Korrektur vorschlug nur einmal den Content einzulesen.

Dies funktioniert ebenfalls für eine zufällige oder bestimmte Datei in einem Ordner.

In dem Sinne: Frohes Zeilen wählen.

Script: Dynamisch Parameter zu einem Befehl hinzufügen [PowerShell]

Hallo,

um dynamisch Parameter zu einem PowerShell-Befehl hinzuzufügen, kann man mit Splatting arbeiten.
Das heißt, alle Parameter die an einen Befehl übergeben werden sollen, werden in einem Splat (Hashtable) gespeichert und der Befehl dann im Anschluss mit dem Parameter-Splat aufgerufen.
Als Beispiel nehmen wir nun den Befehl:

Nun wollen wir den Pfad angeben und welchen Dateitypen wir suchen wollen. Der „normale“ Befehl dafür würde so aussehen:

Wir suchen alle Text-Dateien im Verzeichnis C:\Windows\Logs.

In einem Splat würde dies nun wie folgt aussehen:

Und der Befehl würde so aufgerufen werden:

Nun kommen wir aber zum Vorteil von Splat, wir können dynamisch weitere Parameter mit Werten hinzufügen.
Beispielsweise gibt der User erst beim Aufrufen einer Funktion an, dass er es toll finden würde, wenn Dateien ausgeschlossen werden würden, die mit A anfangen.
Das heißt in einer Beispiel-Funktion, dass ein Parameter abgefragt wird und nur wenn dieser einen Wert enthält der Parameter ergänzt wird:

Wenn die Funktion SuperSearchTXTFile nun ohne -ExcludeLetter ‚A‘ aufgerufen werden würde, so würden wieder alle .txt-Dateien (auch die mit A) gefunden werden.

Ich hoffe ich konnte euch das Splatting im allgemeinen und das dynamisch anpassen eben jener etwas verständlicher machen.

In dem Sinne: Frohes dynamisch sein.

 

 

1 2 3 4 5 26