Tag Archives: command line

Automatically Add Missing @onmicrosoft.com Aliases to Office 365 Users

When managing Office 365, especially during domain migrations or hybrid setups, it’s critical to ensure every user has a corresponding @onmicrosoft.com alias.
This alias helps avoid delivery issues and supports fallback routing if needed.

Today, we’ll walk through how to check if users are missing the @onmicrosoft.com alias — and automatically add it if needed.

Let’s dive in.


What This Script Will Do:

  • Pull all mailboxes from Microsoft 365.
  • Check if their primary email is from your main domain (e.g., yourdomain.com).
  • If so, make sure they also have a yourdomain.onmicrosoft.com alias.
  • If missing, add the alias automatically.
  • Log everything into a clean, auditable table.
# Connect to Exchange Online
Connect-ExchangeOnline -UserPrincipalName youradmin@yourdomain.com

# Define your domains
$primaryDomain = "yourdomain.com"
$onMicrosoftDomain = "yourdomain.onmicrosoft.com"

# Initialize a results array
$results = @()

# Get all mailboxes
$users = Get-Mailbox -ResultSize Unlimited

foreach ($user in $users) {
    $userPrincipalName = $user.UserPrincipalName

    # Only process users whose primary address is @yourdomain.com
    if ($userPrimaryAddress = $user.EmailAddresses | Where-Object { $_ -cmatch "^SMTP:.*@$primaryDomain$" }) {

        # Extract the local part (before the @)
        $localPart = ($userPrimaryAddress -replace "SMTP:", "").Split("@")[0]
        $expectedAlias = "$localPart@$onMicrosoftDomain"

        # Check if alias already exists
        $hasAlias = $user.EmailAddresses | Where-Object { $_ -match [regex]::Escape($expectedAlias) }

        if (-not $hasAlias) {
            Write-Host "Adding alias $expectedAlias to $userPrincipalName" -ForegroundColor Yellow

            # Add the missing alias
            Set-Mailbox $user.Identity -EmailAddresses @{add="smtp:$expectedAlias"}

            $results += [PSCustomObject]@{
                UserPrincipalName = $userPrincipalName
                PrimaryEmail      = $userPrimaryAddress
                AddedAlias        = $expectedAlias
                Action            = "Alias Added"
            }
        }
        else {
            $results += [PSCustomObject]@{
                UserPrincipalName = $userPrincipalName
                PrimaryEmail      = $userPrimaryAddress
                AddedAlias        = $expectedAlias
                Action            = "Alias Already Exists"
            }
        }
    }
    else {
        $results += [PSCustomObject]@{
            UserPrincipalName = $userPrincipalName
            PrimaryEmail      = "N/A"
            AddedAlias        = "N/A"
            Action            = "Skipped (Not $primaryDomain)"
        }
    }
}

# Display the results
$results | Format-Table -AutoSize

# Optional: Export results to CSV for auditing
$timestamp = Get-Date -Format "yyyyMMdd-HHmmss"
$results | Export-Csv -Path "AliasUpdateReport_$timestamp.csv" -NoTypeInformation

Script Summary

StepAction
1Connects to Exchange Online.
2Filters users with a primary @yourdomain.com address.
3Checks if their @yourdomain.onmicrosoft.com alias already exists.
4Adds the alias if missing.
5Logs everything to the screen and to a CSV file.

Pro Tips

  • Always test first: Run the script with the Set-Mailbox line commented out if you want a dry run.
  • This script only adds aliases — it never modifies the user’s primary email or login.
  • The CSV file gives you a full audit trail you can save for compliance purposes.

Safety Features

✅ Only users in your @yourdomain.com are affected.
✅ Existing aliases are never duplicated.
✅ No disruption to user mail flow.


Conclusion

This approach ensures every user has a matching @onmicrosoft.com alias, keeping your environment clean, compliant, and ready for future migrations or backup routing needs.

If you’re managing a hybrid environment, tenant migration, or simply cleaning up your domain setup, this script will save you hours of manual work.

Using DISM to Check and Repair Windows Image

You can use the SFC (System File Checker) and DISM (Deployment Image Servicing and Management) commands to check and repair the integrity of system files and Component Store of your Windows (Windows Server) image. These tools can be extremely useful if your Windows is unstable, won’t boot, errors appear when you try to run built-in apps or services, after a virus infection, etc.

In this article, we’ll take a look at how to use the SFC /ScanNowDISM /Online /Cleanup-Image /RestoreHealth, or Repair-WindowsImage -Online -RestoreHealth commands to repair image and system files on Windows 10/11 and Windows Server 2022/2019/2016.

SFC /ScanNow: Using System File Checker to Repair Windows System Files

It is recommended to use the DISM command to restore Windows after you have checked the integrity of your system files using the SFC tool. The sfc /scannow command scans protected system files and if they are missing or corrupted it tries to restore their original copies versions the Windows Component Store (C:\Windows\WinSxS folder).

The SFC tools writes all its activities to the %windir%\logs\cbs\cbs.log . All SFC entries in the CBS.log file are tagged with [SR]. To select only SFC-related entries from the log, run the command:

findstr /c:"[SR]" %windir%\Logs\CBS\CBS.log >"%userprofile%\Desktop\sfc.txt"

If sfc /scannow command returns the error “Windows Resource Protection found corrupt files but was unable to fix some of them“, it is likely that the tool could not get the necessary files from the Windows Component Store (see the image below).

sfc /scannow Windows Resource Protection found corrupt files but was unable to fix some of them

In this case, you can try to repair the Component Store of your Windows image using the DISM.exe command.

The DISM (Deployment Image Servicing and Management) tool is available in all versions of Windows starting from Vista.  

After repairing the Windows image, you can try using SFC to restore your system files.

Check Windows Component Store Health Using DISM

The DISM /Cleanup-Image /CheckHealth switch is used to scan the Windows image for errors and fix them. DISM commands must be run from the elevated command prompt.

Run the following command to check if there are any flags of corruption of the Windows image Component Store (not applicable for Windows 7/Server 2008R2). This command checks the CBS flag set by one of the system maintenance processes.

DISM /Online /Cleanup-Image /CheckHealth

This command doesn’t perform a full scan of the Component Store. The command only checks if your Windows image is flagged as corrupted and if it is possible to fix it. No changes are made to the image.

DISM /Cleanup-Image /CheckHealth - check windows 10 image

In this example, the command has returned that the Windows 10 image has no corruptions:

No component store corruption detected.
The operation completed successfully.

To run a full scan of the Windows Component Store health, run the command:

DISM /Online /Cleanup-Image /ScanHealth

The command to check the Windows image can take quite a long time (10-30 minutes). And will return one of three results:

  • No component store corruption detected – DISM found no errors in the component store;
  • The component store is repairable – DISM has encountered errors in the Component Store and can fix them;
  • The component store is not repairable – DISM cannot fix the Windows Component Store (try using a newer version of DISM or you will have to restore a Windows image from a backup, reset or completely reinstall your Windows instance).
dism: component store is repairable

In order to use DISM /ScanHealth switch on Windowds 7 and Windows Server 2008, you have to install the KB2966583 update. Otherwise, you will see the message: “Error 87. The ScanHealth option is not recognized in this context”.

In some cases, the DISM /ScanHealth returns the following errors:

  • DISM Error 1726 – “The remote procedure call failed”;
  • DISM Error 1910 – “The object exporter specified was not found”.

It definitely means that your Windows image is corrupted and needs to be repaired.

Repair Windows Image Using DISM /RestoreHealth

To fix corruption in the Windows image Component Store, you must use the RestoreHealth option of the DISM command. This option will allow you to fix errors found in the Windows image, automatically download and replace files of damaged or missing components with original versions of files from Windows Update (your computer must have direct Internet access). Run the command:

DISM /Online /Cleanup-Image /RestoreHealth

In Windows 7/2008 R2, this command looks different:
DISM.exe /Online /Cleanup-Image /ScanHealth 

The process of scanning and repairing the Component Store may take quite a long time (30 minutes or more). DISM will automatically download and replace the files of corrupted or missing components with original file versions from Windows Update servers.

If the repair has been successful, the following message will appear:

The restore operation completed successfully.
DISM /Online /Cleanup-Image /RestoreHealth - The restore operation completed successfully

DISM /RestoreHealth:  The Source Files Could Not Be Found

If your computer (server) has no direct Internet access (located behind a proxy, or have used internal WSUS to get security and build updates) or Windows Update service is disabled/damaged (how to repair Windows Update client), then the following errors appear when repairing the Component Store:

  • 0x800f0906 – The source files could not be downloaded. Use the source option to specify the location of the files that are required to restore the feature;
  • 0x800f0950 – DISM failed. No operation was performed;
  • 0x800F081F – The source files could not be found. Use the “Source” option to specify the location of the files that are required to restore the feature.
dism error 0x800F081F - The source files could not be found. Use the “Source” option to specify the location of the files that are required to restore the feature

In all of these cases, you can use alternative ways to get the source Component Store files. It can be:

  • Installation disk/USB flash drive/ISO image;
  • Mounted wim/esd file;
  • Folder \sources\SxS from the installation disk;
  • The install.wim (esd) file with the Windows installation image.

You can specify a WIM or an ESD file with the original Windows installation image to be used as a source to repair the system files. Suppose, you have mounted an installation Windows 11 ISO to the virtual drive D:.

Note. To repair the corrupted files in the Component Store from the local source, the Windows build and edition in the WIM/ESD image must match those of your system.

Check which version of Windows is installed on your computer using the following PowerShell command:

Get-ComputerInfo |select WindowsProductName,WindowsEditionId,WindowsVersion, OSDisplayVersion

powershell: get current windows edition and version

List the available Windows editions in the installation wim image:

Get-WindowsImage -ImagePath "D:\sources\install.wim"

In our case, the Windows 11 Pro image in the install.wim file has ImageIndex = 6.

powershell: get-windowsimage index number

To repair the Component Store from a local WIM/ESD file using the local source files (without using Windows Update online services), run the following command (remember to specify the Windows version index in the image file):

DISM /online /cleanup-image /restorehealth /source:WIM:D:\sources\install.wim:6 /limitaccess
or:
DISM /online /cleanup-image /restorehealth /source:ESD:D:\sources\install.esd:6 /limitaccess

dism /clenup-image /restorehealth command in windows 11

The following errors can appear when running the DISM /RestoreHealth command:

  • Error: 50: DISM does not support servicing Windows PE with the /Online option – this means your DISM thinks you are using a WinPE image. To fix this, remove the registry key HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\MiniNT;
  • DISM Error 87: make sure the DISM command is written correctly, make sure you are using the DISM version for your Windows version (usually when booting in WinPE/ WinRE).

You can find the DISM log of scanning and repair of the system files here: C:\Windows\Logs\CBS.log.

After the component store has been repaired, you can run the system file checker tool (sfc /scannow). It is likely that it will be able to restore the damaged or missing system files (Windows Resource Protection found corrupt files and successfully repaired them).

tool sfc /scannow - Windows Resource Protection found corrupt files and successfully repaired them

If the SFC.exe doesn’t detect any damage to the system files, a message will appear

Windows Resource Protection did not find any integrity violations.

Repair-WindowsImage: Repairing Windows Image Component Store with PowerShell

The version of PowerShell in Windows 10/11 and Windows Server 2016/2019/2022 has a cmdlet similar to the DISM commands discussed above. To scan the Windows component store and find any corruptions, run this command:

Repair-WindowsImage -Online –ScanHealth

Repair-WindowsImage -Online –ScanHealth powershell

If no errors are found in the Component Store, the following message appears:

ImageHealth State: Healthy

To repair Windows Component Store files, run:

Repair-WindowsImage -Online -RestoreHealth

If you don’t have direct Internet access, this command may hang during the image repairing process. You can restore the system components from the local Windows image file (install.wim/install.esd) copied from the Windows 10 installation ISO image. Here you also need to specify the Windows version index in the wim file as the recovery source:

Repair-WindowsImage -Online -RestoreHealth -Source F:\sources\install.wim:5 -LimitAccess

Use DISM Offline to Repair Windows Image

If Windows doesn’t boot correctly, you can use DISM to check and repair system files of your Windows image offline.

If Windows won’t boot after installing updates, try uninstalling the latest updates first according to the guide.

  1. Boot your device from the Windows installation image (you can use the Media Creation Tool to create a bootable Windows USB stick) and press Shift + F10 on the initial Windows install screen;
  2. To check the drive letters assigned in WinPE, run the command diskpart -> list vol (in my example, the drive letter C:\ is assigned to the disk, on which Windows is installed, and I will use it in the next commands); diskpart - get assigned drive letters
  3. Check the system files and repair the corrupted ones with the command: sfc /scannow /offbootdir=C:\ /offwindir=C:\Windows
    sfc /scannow offline: offbootdir offwindir
  4. To repair the offline Windows image, use the following command (I am using a WIM file with the Windows 10 installation image from which the computer is booted as a source to restore my offline Windows image):
    Dism /image:C:\ /Cleanup-Image /RestoreHealth /Source:D:\sources\install.wim
    dism /cleanup-image - restore offline windows 10 image from source wim file
  5. If there is not enough free space on the target disk, you will need a separate drive, e. g., F:\, on which you will create an empty folder mkdir F:\scratch . Perform a repair of the component store using the scratch dir with the command: Dism /image:C:\ /Cleanup-Image /RestoreHealth /Source:D:\sources\install.wim /ScratchDir:F:\scratch

Tip. Here are some useful DISM parameters an administrator must know:

Original article taken from: https://woshub.com/dism-cleanup-image-restorehealth/