blog.icewolf.ch

Let's talk about IT!
posts - 1950, comments - 295, trackbacks - 0

My Links

Archives

Post Categories

icewolf

Monday, November 29, 2021

M365ServiceHealth with PowerShell Module

Hallo zusammen,

Mein Twitter Freund und Namensvetter @AndresGorzelany hat ein PowerShell Modul geschrieben um die M365 Service Health in der PowerShell Konsole darzustellen.


Er hat mich eingeladen daran mitzuarbeiten und ich habe ein paar Stunden investiert um einige von mir gewünschte Verbesserungen einzubauen.

Voraussetzungen:
  • Azure AD App mit ServiceHealth.Read.All Application Permissions
  • PowerShell 5.1
  • MSAL.PS Module
Die Azure AD App muss folgendermassen konfiguriert sein.

Schreibt euch die Application ID auf


MSAL muss aktiviert sein


Ein Client Certificate (eins reicht)


Oder ein ClientSecret muss hinterlegt sein


Ihr benötigt bloss die Rechte "ServiceHealth.Read.All" und diese müssen vom GlobalAdmin "Granted" sein oder werden.


Mit den folgenden Befehlen installiert man sich das M365ServiceHealth PowerShell Modul aus der Gallery (Achtung: PowerShell muss "Als Administrator" gestartet sein.

Find-Module M365ServiceHealth
Install-Module M365ServiceHealth
Get-Command -Module M365ServiceHealth


#ClientSecret
Connect-M365ServiceHealth -TenantId <tenant.onmicrosoft.com> -ApplicationId <ApplicationID> -ClientSecret <ClientSecret>

#Connect with Certificate
Connect-M365ServiceHealth -TenantId <tenant.onmicrosoft.com> -ApplicationId <ApplicationID> -CertificateThumbprint <CertificateThumbprint>

Wer mag, kann sich die Secrets ja in einem SecretManagement Modul ablegen https://blog.icewolf.ch/archive/2021/09/17/secret-management-modules-fur-powershell.aspx

Mit dem folgenden Befehl wird der aktuelle Servicestatus von M365 abgerufen und in der Console dargestellt. Mit dem Refresh Parameter kann man die Sekunden zwischen den aktualisierungen einstellen.

Get-M365ServiceHealth -Refresh 60


Will man mehr Details über die Issues eines Services erfahren gibt man folgendes ein

Get-M365ServiceHealthIssues -ServiceName <ServiceName>
Get-M365ServiceHealthIssues -ServiceName "Exchange Online"


Viel Spass beim Ausprobieren des Moduls.

Liebe Grüsse
Andres Bohren


posted @ Tuesday, November 30, 2021 10:03 PM | Filed Under [ PowerShell Microsoft365 ]

Hinzufügen und Entfernen von M365 Lizenzen mit Microsoft Graph PowerShell

Hallo zusammen,

Kürzlich habe ich gezeigt, wie man mit dem AzureAD PowerShell Module Lizenzen in M365 hinzufügt und entfernt


Connect-AzureAD
Get-AzureADSubscribedSku
Get-AzureADSubscribedSku | Select -Property Sku*,ConsumedUnits -ExpandProperty PrepaidUnits


Die SKU Part Numer ist meist etwas kryptisch. Man schaue deshalb hier nach
https://docs.microsoft.com/en-us/azure/active-directory/enterprise-users/licensing-service-plan-reference

Mit dem folgenden Befehl sieht man einfach, die SkuID, den SkuNamen, wieviele Lizenzen man zu gewiesen hat (ConsumedUnits) und wie viele vorhanden sind (Enabled), sowie Suspended und Warning.

Get-AzureADSubscribedSku | Select -Property Sku*,ConsumedUnits -ExpandProperty PrepaidUnits | ft


Nun versuche ich das ganze über das Microsoft Graph PowerShell Module.

Connect-MgGraph -Scopes User.ReadWrite.All, Directory.ReadWrite.All


Da muss der Tenant Admin die Berechtigungen erlauben oder es gibt einen Azure AD Admin Consent Workflow.


Das Problem ist hier die Art wie die Prepaid Units als Property Array aufgeführt sind

Get-MgSubscribedSku
(Get-MgSubscribedSku)[0] | fl
(Get-MgSubscribedSku)[0].PrepaidUnits



Um die selbe Darstellung zu erhalten wie bei AzureAD ist ein kleines Script und PSCustomProperty notwendig.

###############################################################################
# SKU's an License with MgGraph and PSCustomObject
###############################################################################
#Array with all needed Properties using PSCustomObject
$ArraySKUS = @()
$SKUS = Get-MgSubscribedSku
Foreach ($SKU in $SKUS)
{
    #$ArraySKU = @()
    $AppliesTo = $SKU.AppliesTo
    $CapabilityStatus = $SKU.CapabilityStatus
    $SkuId = $SKU.SkuId
    $SkuPartNumber = $SKU.SkuPartNumber
    $ConsumedUnits = $SKU.ConsumedUnits
    $Enabled = $SKU.PrepaidUnits.Enabled
    $Suspended = $SKU.PrepaidUnits.Suspended
    $Warning = $SKU.PrepaidUnits.Warning
    $SKUObject = [PSCustomObject]@{
        AppliesTo             = $AppliesTo
        CapabilityStatus     = $CapabilityStatus
        SkuId                = $SkuId
        SkuPartNumber        = $SkuPartNumber
        ConsumedUnits        = $ConsumedUnits
        Enabled                = $Enabled
        Suspended            = $Suspended
        Warning                = $Warning
    }
    $ArraySKUS += $SKUObject
}
$ArraySKUS | FT




Beim hunzufügen und entfernen wird mit den SkuID's gearbeitet. Ein bisschen doof finde ich, dass man auch beim entfernen ein leeres Array beim Parameter "Add-Licenses" mitgeben muss. Das selbe gilt natürlich beim hinzufügen, dort wird ein leeres Array beim Parameter "RemoveLicenses" erwartet.
Andererseits ermöglicht das das gleichzeitige hinzufügen und entfernen unterschiedlicher Lizenzen - was durchaus ein Vorteil sein kann.

#Lizenz vom Benutzer anzeigen
Get-MgUserLicenseDetail -UserId m.muster@icewolf.ch

#Lizenz entfernen
Set-MgUserLicense -UserId m.muster@icewolf.ch -AddLicenses @() -RemoveLicenses @('e43b5b99-8dfb-405f-9987-dc307f34bcbd') #PhoneSystem

Set-MgUserLicense -UserId m.muster@icewolf.ch -AddLicenses @{SkuId = 'e43b5b99-8dfb-405f-9987-dc307f34bcbd'} -RemoveLicenses @() #PhoneSystem


Liebe Grüsse
Andres Bohren


posted @ Monday, November 29, 2021 11:43 PM | Filed Under [ PowerShell Microsoft365 ]

DMARC Advisor

Hallo zusammen,

Ich teste ja gerne hin und wieder DMARC Auswertungstools. Aktuell habe ich https://dmarcadvisor.com/ getestet. Man kann dort eine kostenlose Trialversion anfordern.


Dazu muss man einfach einen Account eröffnen




Anschliessend erhält man eine Email, bei dem man auf den Aktivierungslink klicken muss.

Danach kann man sich mit dem Account einloggen


Es wird einem gleich ein neuer DMARC Record vorgeschlagen. Im gegensatz zum vorgeschlagenen Record habe ich auch gleich noch das Value für sp (subdomain) erstellt. Es macht sicher Sinn, da erst mal mit "None" laufen zu lassen um eine übersicht zu erhalten. Und dann langsam auf "Quarantine" und später dann auf "Reject" umzustellen.

Ich habe meinen DMARC Record im Azure DNS umgestellt.

"v=DMARC1; p=none; sp=none; rua=mailto:wclmh3mw@ag.eu.dmarcadvisor.com;"


Danach sieht es im Portal so aus. Am besten man sendet gleich mal ein Mail an eine @gmail.com adresse. Von dort werden nämlich DMARC Reports wieder zurück an den RUA gesendet. Sieht man aber meist erst am nächsten Tag.


Ich habe meine icewolf.ch Domäne schon vor ein paar Tagen so aufgesetzt und den DMARC Record auf für die Hauptdomäne auf Reject gesetzt.


Wirklich cool finde ich den Detailviewer. Da sieht man, von welcher IP die Mails versendet wurden und ob SPF, DKIM und DMARC richtig waren.


Ausserdem kann man sich auch Alerts setzen. Damit habe ich aber noch nicht so viel herumgespielt.


Alles in allem ein solides DMARC Analyzer tool, viel besser als der kürzlich getestete DMARC Monitor von Valimail.

Liebe Grüsse
Andres


posted @ Monday, November 29, 2021 10:40 PM | Filed Under [ Exchange ]

Powered by:
Powered By Subtext Powered By ASP.NET