blog.icewolf.ch

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

My Links

Archives

Post Categories

icewolf

Friday, July 16, 2021

Zahlenrätsel mit PowerShell lösen

Hallo zusammen,

Ich bin per Zufall auf folgendes Zahlenrätsel gestossen. Und habe Beschlossen, das mit PowerShell zu lösen.

Abu Ali al-Hasan ibn al-Hasan ibn al-Haitham (965–1041) war ein Mathematiker, Astronom und Physiker ersten Ranges. In seiner Schrift "Über die Lösung einer Zahlenfrage+ findet man folgendes Rätsel:

Als ein Schäfer nach der Grösse seiner Herde gefragt wird, antwortet er: "Es sind weniger als 500 Schafe. Teile ich die Anzahl meiner Schafe durch 2, 3, 4, 5 oder 6, so bleibt jedes Mal ein Schaf übrig. Teile ich meine Herde jedoch durch 7, so geht die Rechnung glatt auf." Wie gross ist die Herde?

Nun lösen wir dieses Zahlenrätsel mit PowerShell. Dazu braucht es erstmal eine mathematische Funktion, welche den Rest einer Division ausgibt. Diese Funktion heisst "Modulo" und wird in PowerShell mit dem % Symbol angegeben.

Zeig mir den Rest von 7 geteilt durch 6 = 1 (PowerShell: 7 % 6)

Zeig mir den Rest von 8 geteilt durch 6 = 2 (PowerShell: 8 % 6)

Nun müssen wir also alle Zahlen zwischen 0 und 500 herausfinden, welche durch 7 Teilbar sind. In einer Schleife addieren wir also immer 7 dazu.

Um den Code möglichst effizient zu halten, starten wir mit dem grössten Divisor. Erst wenn dort der Rest 1 ergibt untersuchen wir die anderen Reste der Divison.

$i = 0
while ($i -lt 500)
{
    $i = $i +7
    #Write-Host "X: $i"
    $mod2 = $i % 2
    $mod3 = $i % 3
    $mod4 = $i % 4
    $mod5 = $i % 5
    $mod6 = $i % 6
    
    If ($Mod6 -eq 1)
    {
        If ($Mod5 -eq 1)
        {
            If ($mod4 -eq 1)
            {
                If ($mod3 -eq 1)
                {
                    If ($mod2 -eq 1)
                    {
                        Write-Host "Solution: $i" -ForeGroundColor Green
                    }
                }
            }
        }
    }
}

Die Lösung ist also: 301

Noch viel schöner ist die Lösung von Andre Sicking (Twitter: @andre_sicking)

For($i = 0$i -le 500$i = $i + 7) {
If(($i % 2 -eq 1) -and ($i % 3 -eq 1) -and ($i % 4 -eq 1) -and ($i % 5 -eq 1) -and ($i % 6 -eq 1)) { Write-Host "Es sind $i Schafe." }
}
Liebe Grüsse
Andres Bohren

posted @ Saturday, July 17, 2021 10:56 AM | Filed Under [ PowerShell Fun ]

ESXi670-202103001

Hallo zusammen,

Es gibt mal wieder Patches für ESXi 6.70

VMSA-2021-0014

https://www.vmware.com/security/advisories/VMSA-2021-0014.html

 

VMware ESXi 6.7, Patch Release ESXi670-202103001

https://docs.vmware.com/en/VMware-vSphere/6.7/rn/esxi670-202103001.html

Product Patches

https://my.vmware.com/group/vmware/patch#search

Das ZIP File wird über den Datastore Browser auf den ESXi Server raufgeladen.

Da ich einen Single ESXI Server habe, schalte ich erstmal alle VM's aus.

Nun kann der Patch installiert werden.

esxcli software vib install -d /vmfs/volumes/datastore3/ISO/ESXi670-202103001.zip

Nach dem Reboot des ESXi Hosts ist die korrekte Build Nummer 17700523 zu sehen

Grüsse
Andres Bohren

posted @ Saturday, July 17, 2021 10:19 AM | Filed Under [ Virtualisation ]

Microsoft Graph API benutzt EWS Schnittstelle im Hintergrund

Hallo zusammen,

Küzrlich habe ich einen Artikel veröffentlicht, bei dem ich übers GraphAPI Mails versendet habe https://blog.icewolf.ch/archive/2021/07/07/graph-api-send-mail-with-powershell.aspx

Dabei habe ich komische Fehlermeldungen erhalten. Mit der PowerShell gabs einfach einen HTTP 401 Unauthorized Status.

Erst im Graph Explorer sieht man etwas mehr

{
    "error": {
        "code": "ErrorAccessDenied",
        "message": "Access to OData is disabled.",
        "innerError": {
            "date": "2021-07-16T16:06:01",
            "request-id": "30d5d686-af1a-4da2-b022-f554b985e8bf",
            "client-request-id": "87e12b56-d6fa-aa31-2e89-fd507125738a"
        }
    }
}

Die Permissions sind schon gegeben, daran kann es also nicht liegen.

Wie sich nun herausgestellt hat, benutzt die Graph API für den Zugriff auf Exchange (Mail / Kalender / Contacts) im Hintergrund die EWS Schnittstelle.

Ich hatte vor einiger Zeit mit der EwsApplicationAccessPolicy rumgespielt und dort die EnfrorceAllowList aktiviert.

Get-OrganizationConfig | fl *ews*

Set-OrganizationConfig -EwsApplicationAccessPolicy $Null -EwsEnabled $true

Allenfalls auch mit Get-CASMailbox prüfen, ob auf dem Benutzer die EwsApplcationPolicy/EwsAllow/EwsBlockList eingeschaltet sind und ob EwsEnabled auf $True steht.

Get-CASMailbox -Identity <userprincipalname> | fl *ews*

Es kann bis zu 90 Minuten dauern, bis diese Änderung aktiv wird.

Danach funktioniert es im Graph Explorer

Und auch das PowerShell Script funktioniert

Grüsse
Andres Bohren

posted @ Friday, July 16, 2021 11:34 PM | Filed Under [ Exchange PowerShell ]

Powered by:
Powered By Subtext Powered By ASP.NET