Jump to content

daabm

Expert Member
  • Gesamte Inhalte

    5.657
  • Registriert seit

  • Letzter Besuch

Beiträge erstellt von daabm

  1. @cj_berlin so einfach ist es nicht. Es gibt nicht nur die Vererbungsreihenfolge der GPOs, sondern - viel wichtiger und viel unbekannter - die Verarbeitungsreihenfolge der CSEs. Dazu kommt dann noch, daß je nach Konfiguration manche nur Foreground, Changed oder Everytime aktualisiert werden... Letzteres könnte hier der Schlüssel zur Lösung sein.

    Hier gibt's in der ersten Tabelle die CSE-Verarbeitungsreihenfolge: https://evilgpo.blogspot.com/2012/11/guids-guids-guids-2.html

    Und wie gesagt, wichtig ist nicht nur diese Reihenfolge, sondern auch welche "wann anwenden"-Richtlinie sie haben.

  2. Update 2: Die KI hat natürlich den Baum in einem Job gemalt und die Melodie im Vordergrund gespielt. Das klappt nicht wirklich gut, wenn man da dann noch die Ausgabe vom Baum abholen muss... Andersrum ist viel besser :-) Musik in einem Job spielen lassen und den Baum in Vordergrund malen. Dann noch Notenhöhen dynamisch berechnen und die Laufgeschwindigkeit variabel machen.

     

    # Jingle Bells in PowerShell + ASCII-Weihnachtsbaum
    
    Clear-Host
    
    $baseFrequency, $baseDuration = 523, 100 # Basistonhöhe 523 = c1, Basisdauer 100ms
    $scaling = [math]::Pow(2,1/12)  # ein Halbtonschritt
    # Noten-Liste, damit die Melodie lesbar bleibt - könnte man auch über numerische Indizes machen,
    # aber dann kann das niemand mehr lesen.
    $notes = @('C','Cis','D','Dis','E','F','Fis','G','Gis','A','B','H')
    $notemap = for ($i = 0; $i -lt $notes.Length; $i++) {
        # Frequenzen der Halbtöne berechnen
        @{$notes[$i] = $baseFrequency * [math]::Pow($scaling, $i)}
    }
    
    # Vereinfachte "Jingle Bells"-Melodie
    $melody = @(
        # "Jingle bells, jingle bells, jingle all the way"
        @('E',4), @('E',4), @('E',8), @('E',4), @('E',4), @('E',8),
        @('E',4), @('G',4), @('C',4), @('D',4), @('E',10),
    
        # "Oh what fun it is to ride in a one-horse open sleigh"
        @('F',4), @('F',4), @('F',4), @('F',4), @('F',4), @('E',4), @('E',4),
        @('E',2), @('E',2), @('E',4), @('D',4), @('D',4), @('E',4), @('D',8), @('G',8)
    )
    
    # Melodiedauer berechnen, um den Baum in der richtigen Geschwindigkeit auszugeben
    $melodyDuration = 0
    $melody | ForEach-Object { $melodyDuration += $_[1] }
    
    # Melodie-Job starten
    $musicJob = Start-Job -ScriptBlock {
        param($melody, $notemap, $baseDuration)
        foreach ($note in $melody) {
            [console]::Beep($notemap.$($note[0]), $note[1] * $baseDuration)
        }
    } -ArgumentList ($melody, $notemap, $baseDuration)
    
    # Baum-Zeilen im Hauptskript
    $treeLines = @(
        '',
        '           +',
        '           |',
        '           *',
        '        * *** *',
        '        | *** |',
        '      * ******* *',
        '      | ******* |',
        '    * *********** *',
        '    | *********** |',
        '    ***************',
        '   *****************',
        '          |||',
        '         /|||\',
        '',
        '   Frohe Weihnachten!',
        ''
    )
    
    # Baum im Hauptskript "wachsen" lassen, während die Musik im Job läuft
    $lineDelay = $melodyDuration / $treeLines.Count
    foreach ($line in $treeLines) {
        switch -Regex ($line) {
            '^ +[\+\|]$' {   # Baumspitze
                Write-Host $line -ForegroundColor Yellow
                break
            }
            '^( +)(\* |\| )(\*+)( \*| \|)$' {
                # Kerzen sind weiß, Flammen gelb, Nadeln dazwischen grün
                $Candle = [consolecolor]::Yellow
                if ($matches[2] -eq '| ' ) {    # Kerze
                    $Candle = [consolecolor]::White
                }
                Write-Host $matches[1] -NoNewline
                Write-Host $matches[2] -ForegroundColor $Candle -NoNewline
                Write-Host $matches[3] -ForegroundColor Green -NoNewline
                Write-Host $matches[4] -ForegroundColor $Candle
                break
            }
            'Weihnachten' {
                Write-Host $line -ForegroundColor Red
                break
            }
            '\|{3}' {   # Baumstamm
                Write-Host $line -ForegroundColor DarkYellow
                break
            }
            default {   # Gewöhnliche Nadeln ohne Kerze
                Write-Host $line -ForegroundColor Green
            }
        }
        Start-Sleep -Milliseconds ($lineDelay * $baseDuration)
    }
    
    # Warten, bis die Melodie fertig ist
    Wait-Job $musicJob | Out-Null
    Remove-Job $musicJob | Out-Null

     

    • Danke 2
  3. Fingerübung: Implementiere eine Oktavsteuerung über eine entsprechende Variable $Oktave Lachend https://www.theorie-musik.de/grundlagen/tonhoehen-und-tonnamen-notennamen/ 

    Verwende dabei 440 Hz als Bezugsgröße und berechne für die jeweilige Oktave alle relevanten Tonfrequenzen, statt diese als Konstante zu definieren - https://de.wikipedia.org/wiki/Frequenzen_der_gleichstufigen_Stimmung

    Bonusaufgabe: Ermögliche eine beliebige Frequenz als "Basisfrequenz". Wahlweise durch Angabe des Basis-Tons ("C" etc.) oder durch Angabe einer Frequenz (523 etc.)

     

    PS: In der Powershell Konsole spielt es schlecht, in der ISE läuft es seltsamerweise besser.

    • Danke 1
  4. Update: Jetzt mit Kerzen in weiß und gelber Flamme :-) 

    # Jingle Bells in PowerShell + ASCII-Weihnachtsbaum
      
    Clear-Host
    
    # Frequenzen (in Hz)
    $notes = @{
         'C'    = 523
         'D'    = 587
         'E'    = 659
         'F'    = 698
         'G'    = 784
         'A'    = 880
         'H'    = 988
         'Rest' = 0
    }
    
    function Play-Note {
         param(
             [string]$note,
             [int]$duration
         )
    
         if ($note -eq 'Rest') {
             Start-Sleep -Milliseconds $duration
         } else {
             [console]::Beep($notes[$note], $duration)
         }
    }
    
    # Baum-Job starten, der die Zeilen zeitverzögert erzeugt
    $treeJob = Start-Job -ScriptBlock {
       $treeLines = @(
         '',
         '           *',
         '        * *** *',
         '        |*****|',
         '      * ******* *',
         '      |*********|',
         '    * *********** *',
         '    |*************|',
         '    ***************',
         '   *****************',
         '          |||',
         '          |||',
         ''
         '   Frohe Weihnachten!'
       )
    
       $lineDelay = 600
       foreach ($line in $treeLines) {
         Write-Output $line
         Start-Sleep -Milliseconds $lineDelay
       }
    }
    
    # Vereinfachte "Jingle Bells"-Melodie
    $melody = @(
         # "Jingle bells, jingle bells, jingle all the way"
         @('E',400), @('E',400), @('E',800),
         @('E',400), @('E',400), @('E',800),
         @('E',400), @('G',400), @('C',400), @('D',400),
         @('E',1000),
    
         # "Oh what fun it is to ride in a one-horse open sleigh"
         @('F',400), @('F',400), @('F',400), @('F',400),
         @('F',400), @('E',400), @('E',400), @('E',200),
         @('E',200), @('D',400), @('D',400), @('E',400),
         @('D',800), @('G',800)
    )
    
    # Zähler für bereits ausgegebene Baum-Zeilen
    $printedCount = 0
    
    # Hilfsfunktion für farbige Ausgabe
    function Show-TreeLine {
         param([string]$text)
         if ($text -match '^( +)(\* |\|)(\*+)( \*|\|)$') {
           # Kerzen sind weiß, Flammen gelb, Nadeln grün
           if ($matches[2] -eq '|') {
             $Candle = [consolecolor]::White
           } else {
             $Candle = [consolecolor]::Yellow
           }
           Write-Host $matches[1] -NoNewline
           Write-Host $matches[2] -ForegroundColor $Candle -NoNewline
           Write-Host $matches[3] -ForegroundColor Green -NoNewline
           Write-Host $matches[4] -ForegroundColor $Candle
         } elseif ($text -match 'Weihnachten') {
             Write-Host $text -ForegroundColor Red
         } elseif ($text.Trim() -eq '|||') {
             Write-Host $text -ForegroundColor DarkYellow
         } else {
             Write-Host $text -ForegroundColor Green
         }
    }
    
    # Musik abspielen und Baum "wachsen" lassen
    foreach ($noteEntry in $melody) {
         # Alle bisher vom Job erzeugten Zeilen holen, aber im Job behalten
         $allOutput = Receive-Job $treeJob -Keep
    
         if ($allOutput) {
             # Sicherheits-Cast zu Array (auch wenn nur eine Zeile da ist)
             $allLines = @($allOutput)
    
             if ($allLines.Count -gt $printedCount) {
                 # Nur wirklich neue Zeilen ausgeben (Index-basiert)
                 for ($i = $printedCount; $i -lt $allLines.Count; $i++) {
                     $text = [string]$allLines[$i]
                     Show-TreeLine $text
                 }
                 # Zähler aktualisieren
                 $printedCount = $allLines.Count
             }
         }
    
         # Note spielen
         $note = $noteEntry[0]
         $dur  = $noteEntry[1]
         Play-Note -note $note -duration $dur
    }
    
    # Nach der Melodie sicherstellen, dass der Baum komplett ausgegeben ist
    Wait-Job $treeJob | Out-Null
    $allOutput = Receive-Job $treeJob
    
    if ($allOutput) {
         $allLines = @($allOutput)
    
         if ($allLines.Count -gt $printedCount) {
             for ($i = $printedCount; $i -lt $allLines.Count; $i++) {
                 $text = [string]$allLines[$i]
                 Show-TreeLine $text
             }
         }
    }
    
    Remove-Job $treeJob | Out-Null
    
    if ($host -match 'Console') {
       Write-Host ''
       Write-Host 'Fertig! Drücke eine Taste zum Beenden...' -ForegroundColor Yellow
       [void][System.Console]::ReadKey($true)
    }

     

    • Like 9
  5. Hallo zusammen. Kann jemand entweder bestätigen, daß das so nicht funktioniert oder mir nen Tip geben, wie ich es zum Funktionieren bekomme? (Englisch dürfte ok sein, wenn ich überlege wer hier als Beantworter überhaupt in Frage kommt :-) ) Wir haben dazu ein Ticket beim MS Support offen, und die wollen jetzt "keep customer busy" mit mir spielen...

    Danke und Gruß Martin

     

    • 2 Domains with a forest trust
      • Adatum.com
      • Contoso.com
    • User in Domain Adatum.com
    • Principal (User or Computer) in Contoso.com

    Register arbitrary SPNs on the Contoso.com principal, one with a port, one without a port.

    MyService/MyHost.fabrikam.com

    MyService/MyHost.fabrikam.com:1433

    Add a realm mapping on a member computer in either of these domains (doesn’t matter if this computer is a member of Adatum.com or Contoso.com) to point these arbitrary SPN to Contoso.com (https://gpsearch.azurewebsites.net/#1823)

    “Contoso.com” = “.fabrikam.com”

    Login with ADatum.com User on that computer and request tickets for both SPNs.

    Klist get MyService/MyHost.fabrikam.com (will work)

    Klist get MyService/MyHost.fabrikam.com@Contoso.com (will work)

    Klist get MyService/MyHost.fabrikam.com:1433@Contoso.com (will work)

    Klist get MyService/MyHost.fabrikam.com:1433 (will fail with error 0x6fb)

    Review the Security-Kerberos eventlog entries to find the TGS request for the last SPN has been sent to Adatum.com instead of Contoso.com.

  6. Am 12.12.2025 um 07:17 schrieb Squire:

    Bisher habe ich es so gehandhabt, dass die DCs als letzte auf die neuen OS umgestellt wurden. Sprich die neuen Server OS erstmal bei Memberservern, dann bei wichtigeren... 

     

    Hm - für mich sind DCs die unwichtigsten... Stirbt einer, machste halt nen neuen.

    Nen DC stateless zu machen ist relativ einfach.  Nen Application Server stateless zu machen kann ein riesen Aufwand werden.

×
×
  • Neu erstellen...