Thursday, January 21, 2021
Hallo zusammen,
In meinem LAB habe ich einen Windows Server 2012 R2. Damit die PowerShell Module über die PowerShell Gallery installiert werden können, muss das Windows Management Framework 5.1 installiert werden.

Wie man sieht ist auf dem Server PowerShell 4.0 installiert.
Get-Host

Nun wird das Windows Management Framework 5.1 (WMF 5.1) heruntergeladen.

Nun kann das WMF installiert werden.




Die Installation erfordert einen Neustart.

Nach dem Neustart sieht man, dass die PowerShell 5.1 installiert wurde.

Natürlich müsst ihr dafür sorgen, dass die TLS1.2 Settings für DotNet und PowerShell gesetzt sind. Wie das geht ist in folgendem Blog Artikel beschrieben http://blog.icewolf.ch/archive/2020/12/03/admins-setzt-endlich-die-tls-1-2-eintrage-fur-dotnetpowershell.aspx
Nun kann man prüfen ob man mit dem PowerShellGet Module ein Modul aus der PowerShell Gallery findet. Dazu wird dann der NuGet Provider installiert.
Find-Module ExchangeOnlineManagement

Am besten man aktualisiert auch gleich noch das PowerShellGet Module
Install-Module PowerShellGet -Force
Nach der installation vom Exchange Management V2 Module kann man eine Verbindung mit Exchange Online herstellen.
Install-Module ExchangeOnlineManagement
Import-Module ExchangeOnlineManagement
Connect-ExchangeOnline
Grüsse
Andres Bohren

Tuesday, January 19, 2021
Hallo zusammen,
Vor ein paar Tagen wurde das Admin Center Preview 2012 angekündigt.
Announcing Windows Admin Center Preview 2012
https://blogs.windows.com/windows-insider/2021/01/15/announcing-windows-admin-center-preview-2012/
Windows Insider Preview Downloads
https://www.microsoft.com/en-us/software-download/windowsinsiderpreviewserver

Auf meinem Windows Server 2019 Core habe ich das installiert.








Anscheinend ist die Versionsnummer noch nicht aktualisiert. Habe Windows Admin Center deinstalliert und neu installiert, mit demselben Ergebnis.

Grüsse
Andres Bohren

Hallo zusammen,
Fast schon einen Monat gibt es das neue Jabra Direct mit der Version 5.0.17635.
Jabra Direct Download
https://www.jabraheadsets.ch/software-and-services/jabra-direct
Versionshinweise für Jabra Direct
https://www.jabraheadsets.ch/support/release-notes/release-note-jabra-direct?_ga=2.110221445.123754349.1611060738-1169049350.1611060738



Die Oberfläche wurde neu gestaltet. Ich finde es eigentlich recht gelungen.



Grüsse
Andres Bohren

Monday, January 18, 2021
Hallo zusammen,
In diesem Blog Artikel erkläre ich euch, wie man die Konfiguration von Azure Active Directory Connect exportiert und mit PowerShell die XML Files durchsucht und die Konfiguration anzeigt.
Als erstes muss auf dem AAD Connect Server die Konfiguration exportiert werden
Import-Module ADSync
Get-ADSyncServerConfiguration -Path C:\Install\AADicewolf\

Im Verzeichnis werden drei weitere Ordner angelegt "Connectors", "GlobalSettings" und "SynchronizationRules".

In den Connectors gibt es zwei. Einen für Azure AD und den anderen für Active Directory.

In den Global Settings gibt es nur ein XML

In den Synchronization Rules gibt es ganz viele XML Files

Schauen wir uns mal die Connectoren an. Wie man sieht, handelt es sich um den Connector zu Azure Directory.
Select-XML -Path "C:\Install\AADicewolf\Connectors\Connector_{b891884f-051e-4a83-95af-2544101c9083}.xml" -XPath "/ma-data" | Select-Object -ExpandProperty Node

Beim nächsten Connector handelt es sich um den Active Directory Connector.
Select-XML -Path "C:\Install\AADicewolf\Connectors\Connector_{fbe4d622-6fc6-49ab-a39f-e76849cf374b}.xml" -XPath "/ma-data" | Select-Object -ExpandProperty Node

Daraus wollen wir die Synchronisierten OU's auslesen.
Select-XML -Path "C:\Install\AADicewolf\Connectors\Connector_{fbe4d622-6fc6-49ab-a39f-e76849cf374b}.xml" -XPath "/ma-data/ma-partition-data/partition/filter/containers/exclusions" | Select-Object -ExpandProperty Node | select -ExpandProperty | select -ExpandProperty exclusion
Select-XML -Path "C:\Install\AADicewolf\Connectors\Connector_{fbe4d622-6fc6-49ab-a39f-e76849cf374b}.xml" -XPath "/ma-data/ma-partition-data/partition/filter/containers/inclusions" | Select-Object -ExpandProperty Node | select -ExpandProperty inclusion

Nun schauen wir uns die XML mit den Global Settings an. Dort interessieren mich die Optionen.
Select-XML -Path "C:\Install\AADicewolf\GlobalSettings\MV.xml" -XPath "/saved-mv-configuration/mv-data/parameter-values/parameter" | Select-Object -ExpandProperty Node | ft

Grüsse
Andres Bohren

Saturday, January 16, 2021
Hallo zusammen,
Heute Morgen habe ich eine Azure Budget Warnung von meiner Azure Subscription erhalten.
Azure Budget dient nur der Überwachung der Kosten und verhindert keine hohen Kosten. Aber wenn man rechtzeitig gewarnt wird, so kann man noch reagieren, bevor etwaige Kosten explodieren.
Tutorial: Create and manage Azure budgets
https://docs.microsoft.com/en-us/azure/cost-management-billing/costs/tutorial-acm-create-budgets

Also schaue ich mir die Kostenanalyse im Azure Portal auf der Subscription an. Wie es Aussieht, werden da bis Ende Monat Kosten von etwa CHF108 erwartet.

Also passe ich das Azure Budget entsprechend an.


Ich finde die untenstehende Grafik super. So sieht man gleich, wann die Warnungen versendet werden.
Wie man sieht, habe ich im November einen Dienst ausprobiert, welcher höhere Kosten verursacht hat als in den vorhergehenden Monaten.

In diesem Dialog können die % ausgewählt werden, wann die Meldungen versendet werden und natürlich an wen

Grüsse
Andres Bohren

Hallo zusammen,
Vor zwei Tagen wurde die neuste Version von PowerShell 7 mit der Version 7.1.1 veröffentlicht.
v7.1.1 Release of PowerShell
https://github.com/PowerShell/PowerShell/releases/tag/v7.1.1
Hier die Screenshots der Installation






Grüsse
Andres Bohren

Friday, January 15, 2021
Hallo zusammen,
Für einen Blog Artikel wollte ich sehen, ob das Teams Modul für einige Befehle ein Rest API im Hintergrund anspricht. Das kann man mit Fiddler tun.
Fiddler ist nichts anderes als ein lokaler Proxy welcher auf TCP127.0.0.1:8888 hört. Sieht man hier am Beispiel mit dem Sysinternals Process Explorer

In den Optionen vom Fiddler ist eingestellt, auch HTTPS Traffic zu intercepten. Dazu wird der Traffic mit einem Fiddler Root CA Zertifikat signiert, welches in den Trusted Root Certificates auf dem Computer installiert wird.

Startet man den "Capture Traffic" so wird im Hintergrund der Systemproxy gesetzt.

Dies sieht man im folgenden Beispiel.

Der Trick ist nun, bei der PowerShell Remote Session bei den SessionOptions eine Proxykonfiguration mitzugeben. Dies geschieht mit dem folgenden Befehl
$proxysettings = New-PSSessionOption -ProxyAccessType IEConfig
Und so sieht dann das ganze mit dem Teams Modul und dem Remoting mit Skype for Business Online.
Import-Module MicrosoftTeams
$proxysettings = New-PSSessionOption -ProxyAccessType IEConfig
$sfbSession = New-CsOnlineSession -OverrideAdminDomain icewolfch.onmicrosoft.com -SessionOption $proxysettings
Import-PSSession $sfbSession


Ich habe im Fiddler nur den betreffende PowerShell Prozess herausgefiltert

In diesem Fall sieht man, dass bei den Skype for Business Online Befehlen noch mit Webservices und XML Files gearbeitet wird.

Grüsse
Andres Bohren

Hallo zusammen,
Vor ein paar Monaten habe ich mein M365 Tenant mit Sunrise Work Smart Voice ans PSTN angebunden. Das habe ich im Artikel Microsoft Teams PSTN Telefonie mit Sunrise beschrieben
Nun wurde es Zeit, dass ich mal Teams Auto Attendant und Call Queues dokumentiere. Mehr Informationen gibt es hier.
Plan for Teams auto attendants and call queues
https://docs.microsoft.com/en-us/microsoftteams/plan-auto-attendant-call-queue
Call queue
Als erstes lege ich eine Call Queue an

Nach dem Namen, muss ein Resource Account dafür erstellt werden




Danach kann man die Sprache und wer will eine Welcome Message abspielen. Ich habe dazu mal ein MP3 hochgeladen.

Nun kann man festlegen, wer den Anruf erhalten soll.




Weitere Optionen können festgelegt werden

Auto Attendant
Nun lege ich einen neuen Auto Attendant an

Auch hier muss man einen Namen und die Sprache festlegen

Auch hier lässt sich eine Welcome Message festlegen. Danach wird der Call an die eben erstellte Call Queue weitergeleitet.

Nun müssen die Business Hours festgelegt werden. Am besten klickt man dazu auf "Clear all Hours" und passt das dann an.

Habe mal Bürozeiten MO-Fr 08:00-12:00 und 13:00-17:00 festgelegt. Ich habe eine MP3 hochgeladen, welche ausserhalb der Bürozeiten abgespielt wird.

Nun können noch die Feiertage eingetragen werden. Das überspringe ich vorerst.


Auch hier wird ein Resource Account benötigt.





Die Resource Accounts brauchen eine "Phone System - Virtual User" Lizenz.


Nun kann die Telefonnummer festgelegt werden
Set-CsOnlineApplicationInstance -Identity AutoAttendantDemo01@icewolf.ch -OnpremPhoneNumber +41215553971

Set-CsOnlineApplicationInstance -Identity CallQueueDemo01@icewolf.ch -OnpremPhoneNumber +41215553972

Mit folgendem Befehl können die Resource Accounts angezeigt werden.
Get-CsOnlineApplicationInstance

Diese sieht man auch im Teams Admin Center

Testanruf
Mein Testanruf auf den Autoattendant wird mit der "Ausserhalb der Bürozeiten" Ansage quittiert.
Der Anruf auf die Callqueue sieht dann für den Agent in der Callqueue so aus.

Der Anruf wurde erfolgreich angenommen.

Grüsse
Andres Bohren

Thursday, January 14, 2021
Hallo zusammen,
In diesem Artikel zeige ich euch, wie man mit der Azure PowerShell Virtuelle Maschinen starten kann. Zunächst braucht es dazu das AZ PowerShell Modul.
Install Azure PowerShell
https://docs.microsoft.com/en-us/powershell/azure/install-az-ps?view=azps-5.3.0
Allerdings, darf dafür das Module AzureRM nicht installiert sein, weil die beiden Module inkompatibel sind.
Das kann man mit dem folgenden PowerShell Befehl prüfen
Get-Module -Name AzureRM -ListAvailable
Oder gleich das installationsscript benutzen (Dazu muss die PowerShell als Administrator gestartet werden)
if ($PSVersionTable.PSEdition -eq 'Desktop' -and (Get-Module -Name AzureRM -ListAvailable)) {
Write-Warning -Message ('Az module not installed. Having both the AzureRM and ' +
'Az modules installed at the same time is not supported.')
} else {
Install-Module -Name Az -AllowClobber
}

Nun kann man sich mit dem folgenden Befehl mit Azure Verbinden
Connect-AzAccount


Mit dem folgenden Befehl werden die Virtual Machines auf Azure aufgelistet
Get-AzVM
https://docs.microsoft.com/en-us/powershell/module/az.compute/get-azvm?view=azps-5.3.0
Get-AzVM -Status
Get-AzVM -ResourceGroupName <ResourceGroup>

Mit dem folgenden Befehl können nun einzelne oder alle VM's gestartet werden
Start-AzVM
https://docs.microsoft.com/en-us/powershell/module/az.compute/start-azvm?view=azps-5.3.0
Start-AzVM -Name LAB01 -ResourceGroupName <ResourcGroup>
Get-AzVM | Start-AzVM -NoWait

Liebe Grüsse
Andres Bohren

Hallo zusammen,
Im folgenden Blog Artikel zeige ich euch, wie man die Logs von Microsoft Teams mit PowerShell durchsuchen kann.
Verwenden von Protokolldateien bei der Problembehandlung in Microsoft Teams
https://docs.microsoft.com/de-de/microsoftteams/log-files
Beim Desktop Client von Teams kann man die Protokolle mit Rechtsklick auf das Teams Symbol in der Taskleiste neben der Uhr herunterladen.

Beim Windows Client befinden sich die Logs hier:
%APPDATA%\Microsoft\Teams\logs.txt
Die Datei ist jedoch ziemlich umfangreich. Aber es gibt Kategorien "-- info --" oder "-- event --" oder "-- warning --" und auch "-- error --".

Mit dem PowerShell code, kann man sich die Zeilen welche "-- error --" enthalten anzeigen.
$content = Get-Content -Path E:\SBB\INC\logs.txt -Encoding UTF8
$Appdata = [Environment]::GetFolderPath('ApplicationData')
$content = Get-Content -Path $Appdata\Microsoft\Teams\logs.txt -Encoding UTF8
$content | select-string "-- error --"
Ich habe keine Probleme mit dem Teams Client und es werden keine Fehler bei der Benutzung angezeigt.Folgende Errors scheine scheinen also ganz normal zu sein.
<1484> -- error -- Error saving cookie
<8160> -- error -- Error occurred while saving env_config.json

Grüsse
Andres Bohren
