August 14, 2023

Repair a Windows Server

Open the command prompt as Administrator and run the following commands:

dism /online /cleanup-image /scanhealth
dism /online /cleanup-image /checkhealth
dism /online /cleanup-image /restorehealth


Mount the Windows Server 2016 ISO as a drive (E: in this case) and run the following command. Please check the WIM version before selecting it.

dism /online /cleanup-image /restorehealth /source:WIM:E:\sources\install.wim:1 /limitaccesssfc /scannow

Check Windows Update and install any pending updates.

Reboot the server.

To check the WIM version for various versions of OS, run the following command:

dism /Get-WimInfo /WimFile:E:\sources\install.wim

wim:1 – Windows Server 2019 Standard Installation: Server Core
wim:2 – Windows Server 2019 Standard (Desktop Experience)
wim:3 – Windows Server 2019 DataCenter Installation: Server Core
wim:4 – Windows Server 2019 DataCenter (Desktop Experience)

August 7, 2023

Register SPN for Windows Server

Suppose -

The server name is - Server1
Alias name is - App1
AD Domain name is - company.local

First, create a CNAME record for App1 against Server1 in DNS.

Let it replicate properly.

Once replication is done, login to Server1 and run the following commands: 

netdom computername server1 /add:app1
netdom computername server1 /add:app1.company.local

restart server1.

February 24, 2023

Check Microsoft Exchange Schema Version

# Exchange Schema Version

$sc = (Get-ADRootDSE).SchemaNamingContext
$ob = "CN=ms-Exch-Schema-Version-Pt," + $sc
Write-Output "RangeUpper: $((Get-ADObject $ob -pr rangeUpper).rangeUpper)" # Exchange Object Version (domain)

$dc = (Get-ADRootDSE).DefaultNamingContext
$ob = "CN=Microsoft Exchange System Objects," + $dc
Write-Output "ObjectVersion (Default): $((Get-ADObject $ob -pr objectVersion).objectVersion)" # Exchange Object Version (forest)

$cc = (Get-ADRootDSE).ConfigurationNamingContext
$fl = "(objectClass=msExchOrganizationContainer)"
Write-Output "ObjectVersion (Configuration): $((Get-ADObject -LDAPFilter $fl -SearchBase $cc -pr objectVersion).objectVersion)" # Exchange Object Version (configuration)

This script will give you the output in below format:

Post Schema Update :
RangeUpper: 15334
ObjectVersion (Default): 13243
ObjectVersion (Configuration): 16223

February 19, 2023

Get SID of Active Directory Forest

$rootDomainSid = (Get-ADDomain -Server (Get-ADForest).RootDomain).DomainSID.value
$hasher = [System.Security.Cryptography.HashAlgorithm]::Create('sha256')
$hash = $hasher.ComputeHash([System.Text.Encoding]::UTF8.GetBytes($rootDomainSid))
$hashString = [System.BitConverter]::ToString($hash)
$hashString.Replace('-', '')