Skip to content

Releases: mardahl/Exchange-SOA-Manager

v1.5.10

Choose a tag to compare

@github-actions github-actions released this 10 Sep 11:40
Immutable release. Only release title and notes can be modified.

Changed

  • Mailbox loading requests Exchange Online pages of up to 100 entries and
    shows received counts as worker output arrives. The mailbox list remains
    unavailable until retrieval succeeds; background cancellation is retained.
  • Groups tab lists mail-enabled groups only (distribution lists and
    mail-enabled security groups). Plain security groups are out of scope for
    an Exchange-focused SOA tool; filter is mailEnabled eq true on both
    Graph queries (and the enumeration fallback).

v1.5.9

Choose a tag to compare

@mardahl mardahl released this 19 Aug 14:50
Immutable release. Only release title and notes can be modified.

Fixed

  • False failure when converting contacts/groups to cloud-managed. PATCH .../onPremisesSyncBehavior returns 204 No Content, so the Graph worker's ok envelope carried no value key. Reading $obj.value in Invoke-GraphWorker threw PropertyNotFoundException under Set-StrictMode -Version 2.0, marking the conversion as failed even though Graph had already applied the change. Response value is now read via Get-PropSafe, returning $null for bodyless responses.

v1.5.8

Choose a tag to compare

@github-actions github-actions released this 19 Aug 12:56
Immutable release. Only release title and notes can be modified.

Fixed

  • PropertyNotFoundException: StdErrLines crash on worker startup.
    Follow-up to 1.5.6: the StdErrLines queue key was assigned dynamically
    but never added to the $script:GraphWorker state hashtable, so the first
    Stop-GraphWorker call threw under Set-StrictMode -Version 2.0.

v1.5.7

Choose a tag to compare

@github-actions github-actions released this 19 Aug 12:55
Immutable release. Only release title and notes can be modified.

Fixed

  • Graph sign-in failed with A window handle must be configured on
    Windows.
    The worker child process was started with
    CreateNoWindow = $true, leaving it without a console window. MSAL's WAM
    broker (enabled by default on Windows) resolves its parent window handle
    from GetConsoleWindow(), which returns null without a console, so
    Connect-MgGraph threw AuthenticationFailedException before sign-in
    could even start. The worker now shares the parent's console
    (CreateNoWindow = $false), giving WAM a valid handle.

v1.5.6

Choose a tag to compare

@github-actions github-actions released this 19 Aug 12:53
Immutable release. Only release title and notes can be modified.

Fixed

  • Worker startup failures were invisible without -DebugLog. The stderr
    drain only wrote to the debug log, so a Graph worker that died before
    signalling readiness reported the bare Graph worker exited before signalling readiness. with no cause. Drained stderr lines now also land in
    a thread-safe queue, and the thrown error includes the worker's stderr text
    and process exit code.

v1.5.5

Choose a tag to compare

@github-actions github-actions released this 19 Aug 12:26
Immutable release. Only release title and notes can be modified.

Fixed

  • Graph connection crashed with Cannot find an overload for "Run" and the argument count: "2" on Windows PowerShell 5.1. The stderr drain used
    Task.Run(Action, state), an overload that does not exist on .NET
    Framework 4.x. Scriptblocks on Task.Run also fail because threadpool
    threads have no default runspace. The drain now runs in a dedicated
    [PowerShell] runspace, which works identically on 5.1 and 7.

v1.5.4

Choose a tag to compare

@github-actions github-actions released this 19 Aug 11:58
Immutable release. Only release title and notes can be modified.

Fixed

  • Graph connection crashed with PropertyNotFoundException: StdErrTask.
    Under Set-StrictMode -Version 2.0, reading a missing hashtable key throws.
    $script:GraphWorker was initialised without the StdErrTask key (added in
    1.5.3), so the first Stop-GraphWorker cleanup call inside
    Start-GraphWorker failed before the key was ever assigned. The key is now
    part of the initial state hashtable.

v1.5.3

Choose a tag to compare

@github-actions github-actions released this 18 Aug 13:46
Immutable release. Only release title and notes can be modified.

Fixed

  • Graph connection failed with Invalid JSON primitive: WARNING after
    Exchange module loaded.
    After ExchangeOnlineManagement was imported in
    the parent process, warning text leaked onto the Graph worker's stdout
    channel, breaking the JSON envelope protocol (ConvertFrom-Json failed on
    WARNING.). The worker now prefixes every envelope with SOA:: and sends
    warnings/verbose/info to stderr; the parent drains stderr into the debug
    log and skips non-envelope stdout lines, so worker diagnostics are visible
    and the protocol stays clean.

v1.5.2: fix: false FAILED on mailbox conversion from Set-Mailbox output leak

Choose a tag to compare

@github-actions github-actions released this 20 Jul 08:55
Immutable release. Only release title and notes can be modified.

Fixed

  • Mailbox conversions reported a false FAILED with a blank message.
    ExchangeOnlineManagement 3.10.0's Set-Mailbox -IsExchangeCloudManaged
    emits an object on success. That output leaked into Convert-MailboxSoa's
    return value, turning the result hashtable into an Object[]; the pipeline
    then read Ok/Msg as empty and logged
    FAILED converting '<name>' (<id>): with no message and no error detail,
    even though the SOA change was applied. The Set-Mailbox call is now wrapped
    in [void](...) so success output can no longer pollute the return value.

v1.5.1

Choose a tag to compare

@github-actions github-actions released this 17 Jul 16:38
Immutable release. Only release title and notes can be modified.

Fixed

  • -DebugLog switch had no effect. In a top-level .ps1 script the
    -DebugLog parameter and $script:DebugLog are the same variable;
    src/00-globals.ps1's own default ($script:DebugLog = $false, dot-sourced
    after the parameter binds) silently reset it back to false regardless of
    what was passed on the command line, so DEBUG-level logging never
    activated. The switch's value is now captured before the dot-source loop
    runs and applied afterward.