Powershell in Office 365 (Exchange Online)

Powershell ist tatsächlich mittlerweile eine sehr gute Shell. Zwar doch auch wieder anders als beispielsweise die Bash. Aber dafür ist die Syntax schön einprägsam. Alle Befehle, die irgendwas ausgeben fangen mit "Get-" an und die Befehle zum Setzen mit "Set-". Natürlich kann ich mir ja trotzdem nie merken, wo was hinkommt. Dafür gibt es ja dann wieder das Internet.

Ein paar Standardbefehle sind trotzdem gut. Um sich mit Office 365 zu verbinden muss man aus welchen Gründen auch immer oft Adminrechte nutzen. Aber als Admin weiß man ja eh was man tut. ;)

Folgendes Snippet beispielsweise um entfernte Skripte zu erlauben, die Credentials für Office 365 abzufragen und am Ende sich zu verbinden.
Set-ExecutionPolicy RemoteSigned
$UserCredential = Get-Credential
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic -AllowRedirection
Import-PSSession $Session -DisableNameChecking

Mit folgendem kann man sich mal eine Mailbox Statistik ausgeben lassen (de.aichele ist hier mein Benutzer):
Get-MailboxStatistics de.aichele | Format-List DisplayName,TotalItemSize

Oder auch mal die Speichergrenzen der Mailbox von 50 GB auf einen kleineren Wert setzen (de.aichele ist hier mein Benutzer:
Set-Mailbox -Identity de.aichele -IssueWarningQuota 19.5gb -ProhibitSendQuota 19.75gb -ProhibitSendReceiveQuota 20gb -UseDatabaseQuotaDefaults $false

Oder auch mal um das leidige Winmail.dat Thema (TNEF genannt) zu lösen.

Auch das Anzeigen von Ordnern zu einer bestimmten Mailbox kann hilfreich sein. Beispielsweise wenn nach einer Migration und es fehlt ein Ordner (de.aichele ist hier mein Benutzer).
Get-Mailbox de.aichele | Select-Object alias | foreach-object {Get-MailboxFolderStatistics -Identity $_.alias | select-object Identity}

Die Powershell kann wirklich sehr viel und ist besonders im Zusammenspiel mit Office 365 ein sehr gutes Tool, dass man kennen und beherrschen sollte. Für konkrete Fälle gibt es meistens ja auch wieder das Internet zum Nachschauen.

Notepad++ - Mehrere Zeilen in eine Zeile bringen

Manchmal ist es notwendig, dass man mehrere Werte die untereinander aufgeführt sind wieder in eine Zeile zusammenbringt. Beispielsweise um sie in einem Skript zu bringen. Das geht sicherlich in VIM auch ganz gut. Aber da ich diesen Editor selten benutze kenn ich die Befehle nicht.
Unter Windows gibt es aber den Notepad++, der neben schickem Syntax Hightlighting auch etwas VIM Magie kann.
Deshalb einfach die Zeilen aus der Quelldatei kopieren und in Notepad++ einfügen. Mit STRG+F den Suchmodus aktivieren und unter "Ersetzen" den erweiterten Modus aktivieren. Dann nach "\r\n" suchen und unten eine sinnvolle Ersetzungskette einstellen. In meinem Fall "', '" weil ich alle Werte als kommagetrennte Werte mit Anführungszeichen haben will. Das \r\n sind die Zeichen für das Ende der Zeile und unter Windows der Standardwert für eine neue Zeile. Mehr Infos auf Stack Overflow.

Das Ganze sieht dann so aus. Hier muss ich nur noch am Ende ein Anführungszeichen setzen und hinten noch kontrollieren. Bei mehreren Hundert oder tausend Werten wäre es manuell sehr mühsam.

Da ich diesen Tipp doch immer mal wieder gerne brauche habe ich hier mal reingeschrieben.

Raspberry Pi - Chromium automatisch starten lassen und Ausschalter

Da wir aktuell wegen Corona in unserer Gemeinde ein wenig die Technik hochfahren und es einfach halten wollen, benötigen wir einen relativ einfachen Zugang um das digitale Interface vom Mischpult bereitzustellen. Das Interface wird ganz einfach über eine URL im Browser aufgerufen. Daher lag es nahe einen alten Raspberry Pi 3 (der ist nicht ultraschnell, aber auch nicht so langsam wie der 1er oder 2er) zu nehmen.

Und so hab ich es gemacht:
- RaspiOS installiert und die Grundeinrichtung durchlaufen (Assistenten beim ersten Starten durchmachen).
- Einen Ausschaltknopf anhand dieser Anleitung erstellt. Wobei ich das Starten vom Python Skript später in die LXDE-pi/autostart geschoben habe, da ich den Chrome in der grafischen Oberfläche starte.

Folgenden Code mit sudo nano shutdown.py erzeugen:

# !/bin/python

# Einfaches Skript zum Ausschalten vom Raspberry Pi auf Knopfdruck.

# von Inderpreet Singh

import RPi.GPIO as GPIO

import time

import os

# Legt Nutzung der Broadcom SOC Pin-Anschlussnummern fest

# Setzt den Pin mit eingeschalteten internen Pullup-Widerständen und im Nur-Lesen-Modus

GPIO.setmode(GPIO.BCM)

GPIO.setup(21, GPIO.IN, pull_up_down=GPIO.PUD_UP)

# Unsere Funktion dafür, was passieren soll, wenn man den Button drückt

def Shutdown(channel):

print("Shutting Down")

time.sleep(5)

os.system("sudo shutdown -h now")

# Fügt ein, dass unsere Funktion ausgeführt wird, wenn der Knopfdruck stattfindet

GPIO.add_event_detect(21, GPIO.FALLING, callback=Shutdown, bouncetime=2000)

# Warte jetzt!

while 1:

time.sleep(1)

Das ganze kann man mal testen indem man das Skript laufen lässt mit python3 shutdown.py. Es erscheint "Shutting down" und 5 Sekunden später ist dann der Pi ausgeschaltet und kann stromlos gemacht werden.

- Außerdem soll beim Start automatisch der Chromium mit einer definierten URL im Kiosk Mode aufgerufen werden. Dazu kann man eine Autostart Datei erstellen. Hier muss erst der Ordnerpfad erstellt werden: /home/pi/.config/lxsession/LXDE-pi/ Fehlende Unterordner einfach erstellen.
Dann mit folgendem Befehl sudo nano /home/pi/.config/lxsession/LXDE-pi/autostart das Editorfenster öffnen und folgendes hineinpasten:

# Bildschirmschoner deaktivieren
@xscreensaver -no-splash
@xset s off
@xset -dpms
@xset s noblank

# lädt Chromium im Vollbild bei einem Neustart
@chromium-browser --kiosk http://192.168.2.4/mixer.html

# Shutdown Skript starten
@python3 /home/pi/shutdown.py

Damit wird der Chromium mit der Mixer URL im Vollbild Kiosk Modus gestartet und der Ausschalter aktiviert.
Eine relativ einfache Geschichte um ein digitales Mixer Interface per Netzwerk bereitzustellen. Klar es geht auch per WLAN und Tablet, aber ein fester Platz ist auch schick.
Man braucht nur folgende Komponenten:
- Digitales Mischpult (beispielsweise Soundcraft)
- Router (als DHCP Server und Switch)
- Raspberry Pi mit Maus und Monitor (Tastatur für die bessere Einrichtung)