How to Set Up System Center Operations Manager (SCOM) on Windows Server 2025
System Center Operations Manager (SCOM) is Microsoft’s enterprise monitoring platform designed to provide agent-based, deep visibility across Windows servers, applications, and infrastructure. Unlike lightweight exporters, SCOM delivers intelligent alerting through Management Packs — curated knowledge packs that encode Microsoft’s best practices for monitoring specific technologies including Windows Server OS, IIS, SQL Server, and Active Directory. Running SCOM 2022 against a Windows Server 2025 environment gives you a unified Operations Console, performance data collection, state-based health monitoring, and integration with Azure Monitor for hybrid cloud scenarios. This guide covers the end-to-end setup of SCOM 2022 on a dedicated management server running Windows Server 2025, from SQL prerequisites through Management Pack imports and agent deployment.
Prerequisites
- Windows Server 2025 for the SCOM Management Server role (minimum 8-core CPU, 16 GB RAM, 100 GB disk)
- SQL Server 2019 or SQL Server 2022 for the OperationsManager and OperationsManagerDW databases (can be a separate server)
- SQL Server Reporting Services (SSRS) for SCOM Reporting
- Active Directory domain with the management server and monitored hosts joined to the same or trusted domain
- SCOM 2022 installation media or ISO
- A dedicated low-privilege domain service account for the SCOM Data Access Service (e.g.,
DOMAINsvc-scom-das) - Local Administrator rights on the management server
Step 1: Prepare SQL Server for SCOM
SCOM requires two SQL databases: OperationsManager (operational data) and OperationsManagerDW (data warehouse for reporting). Prepare the SQL Server instance and verify connectivity:
# Run on the SQL Server — verify instance name and check collation
Invoke-SqlCmd -Query "SELECT @@SERVERNAME, SERVERPROPERTY('Collation'), SERVERPROPERTY('ProductVersion')"
# SCOM requires SQL_Latin1_General_CP1_CI_AS collation
# Set if different (requires SQL restart in some cases)
# Invoke-SqlCmd -Query "ALTER DATABASE OperationsManager COLLATE SQL_Latin1_General_CP1_CI_AS"
# Pre-create the databases with appropriate sizes (SCOM can also create them during setup)
Invoke-SqlCmd -Query @"
CREATE DATABASE [OperationsManager]
ON PRIMARY (NAME = N'MOM_DATA', FILENAME = N'D:SCOMOperationsManager.mdf',
SIZE = 2048MB, MAXSIZE = UNLIMITED, FILEGROWTH = 512MB)
LOG ON (NAME = N'MOM_LOG', FILENAME = N'L:SCOMOperationsManager.ldf',
SIZE = 512MB, MAXSIZE = UNLIMITED, FILEGROWTH = 256MB)
"@
Invoke-SqlCmd -Query @"
CREATE DATABASE [OperationsManagerDW]
ON PRIMARY (NAME = N'MOM_DW', FILENAME = N'D:SCOMOperationsManagerDW.mdf',
SIZE = 4096MB, MAXSIZE = UNLIMITED, FILEGROWTH = 1024MB)
LOG ON (NAME = N'MOM_DW_LOG', FILENAME = N'L:SCOMOperationsManagerDW.ldf',
SIZE = 1024MB, MAXSIZE = UNLIMITED, FILEGROWTH = 512MB)
"@
Write-Host "SCOM databases created"
Step 2: Install Required Windows Features on the Management Server
# Install prerequisites on the SCOM Management Server
$features = @(
"Web-Server",
"Web-Windows-Auth",
"Web-ISAPI-Ext",
"Web-ISAPI-Filter",
"Web-Net-Ext45",
"Web-Asp-Net45",
"Web-Default-Doc",
"Web-Static-Content",
"Web-Mgmt-Console",
"NET-Framework-45-Core",
"NET-Framework-45-ASPNET",
"NET-WCF-HTTP-Activation45",
"NET-WCF-Pipe-Activation45",
"NET-WCF-TCP-Activation45",
"WAS-Process-Model",
"WAS-Config-APIs"
)
Install-WindowsFeature -Name $features -IncludeManagementTools -Restart:$false
# Install SQL Native Client and ODBC driver (download from Microsoft)
# Run VC++ Redistributable x64 2015-2022 if not present
Get-WindowsFeature -Name $features | Select-Object Name, InstallState | Format-Table -AutoSize
Step 3: Install SCOM Management Server
Mount the SCOM 2022 ISO and run setup.exe. Alternatively, use an unattended installation for consistency:
# Unattended SCOM Management Server install
# Mount ISO first: Mount-DiskImage -ImagePath "D:SCOM2022.iso"
$setupArgs = @(
"/silent",
"/install",
"/components:OMServer,OMWebConsole,OMReporting",
"/SqlServerInstance:SQLSERVER01SCOM",
"/DatabaseName:OperationsManager",
"/DWSqlServerInstance:SQLSERVER01SCOM",
"/DWDatabaseName:OperationsManagerDW",
"/ActionAccountUser:DOMAINsvc-scom-action",
"/ActionAccountPassword:P@ssw0rd123!",
"/DASAccountUser:DOMAINsvc-scom-das",
"/DASAccountPassword:P@ssw0rd123!",
"/DataReaderUser:DOMAINsvc-scom-reader",
"/DataReaderPassword:P@ssw0rd123!",
"/DataWriterUser:DOMAINsvc-scom-writer",
"/DataWriterPassword:P@ssw0rd123!",
"/WebSiteName:`"Default Web Site`"",
"/WebConsoleAuthorizationMode:Mixed",
"/SRSInstance:SQLSERVER01SCOM",
"/UseLocalSystemActionAccount",
"/AcceptEndUserLicenseAgreement:1"
)
Start-Process "E:setup.exe" -ArgumentList $setupArgs -Wait -NoNewWindow
After installation completes, open Operations Console from the Start menu or %ProgramFiles%Microsoft System CenterOperations ManagerConsoleMicrosoft.EnterpriseManagement.Monitoring.Console.exe.
Step 4: Import Management Packs
Management Packs (MPs) are XML-based monitoring definitions. Import the essential Windows Server and application MPs immediately after installation:
# Connect to SCOM Management Group via PowerShell
Import-Module OperationsManager
New-SCOMManagementGroupConnection -ComputerName "SCOM-MGMT01"
# Import Windows Server OS Management Pack from the local catalog
# MPs are located in Program FilesMicrosoft System CenterOperations ManagerServerManagement Packs
$mpPath = "C:Program FilesMicrosoft System CenterOperations ManagerServerManagement Packs"
Get-ChildItem -Path $mpPath -Filter "*.mp" |
Where-Object { $_.Name -match "Windows.Server|Microsoft.Windows.InternetInformationServices|Microsoft.SQLServer" } |
ForEach-Object {
try {
Import-SCOMManagementPack -FullName $_.FullName
Write-Host "Imported: $($_.Name)"
} catch {
Write-Warning "Failed to import $($_.Name): $_"
}
}
# List imported Management Packs
Get-SCOMManagementPack |
Where-Object { $_.DisplayName -match "Windows Server|IIS|SQL" } |
Select-Object DisplayName, Version, Sealed |
Format-Table -AutoSize
Step 5: Deploy Agents to Monitored Windows Servers
SCOM agents can be push-installed from the Operations Console or deployed manually. The push method requires WinRM and Administrator access from the Management Server to the target:
# Push-install SCOM agent to a list of servers
$targetServers = @("WS2025-WEB01", "WS2025-DB01", "WS2025-APP01")
$managementServer = "SCOM-MGMT01"
foreach ($server in $targetServers) {
$installTask = Install-SCOMAgent `
-DNSHostName $server `
-PrimaryManagementServer (Get-SCOMManagementServer -Name $managementServer)
Write-Host "Agent install initiated for $server - Task ID: $($installTask.Id)"
}
# Check pending agent approvals (if manual approval is required)
Get-SCOMPendingManagement | Select-Object HostName, AgentVersion, PendingAction | Format-Table -AutoSize
# Approve all pending agents
Get-SCOMPendingManagement | Approve-SCOMPendingManagement
For manual agent installation on a target server, copy the agent MSI from the management server and install:
# On the target server — manual agent install
$agentMsi = "\SCOM-MGMT01AgentInstallMOMAgent.msi"
$mgmtServer = "SCOM-MGMT01"
$mgmtGroup = "SCOM-MG01"
Start-Process msiexec.exe -ArgumentList @(
"/i", $agentMsi,
"/qn",
"MANAGEMENT_GROUP=$mgmtGroup",
"MANAGEMENT_SERVER_DNS=$mgmtServer",
"MANAGEMENT_SERVER_AD_NAME=$mgmtServer",
"USE_MANUALLY_SPECIFIED_SETTINGS=1"
) -Wait -NoNewWindow
Start-Service -Name "HealthService"
Get-Service -Name "HealthService" | Select-Object Name, Status, StartType
Step 6: Configure SMTP Notification Channel
# Create an SMTP notification channel
$smtpChannel = Add-SCOMNotificationChannel `
-Name "SMTP-AlertChannel" `
-SmtpServer "smtp.yourdomain.com" `
-SmtpPort 587 `
-FromAddress "[email protected]" `
-Subject "SCOM Alert: {AlertName} on {ComputerName}"
# Create a subscriber (recipient)
$subscriber = Add-SCOMNotificationSubscriber `
-Name "OpsTeam" `
-DeviceList @(
New-SCOMNotificationRecipientDevice `
-Name "Email" `
-Protocol "SMTP" `
-DeviceAddress "[email protected]" `
-Channel $smtpChannel
)
# Create a subscription for Critical and Warning alerts
Add-SCOMNotificationSubscription `
-Name "CriticalAlerts" `
-Channel $smtpChannel `
-Subscriber $subscriber `
-CriteriaString "Severity = 'Critical' OR Severity = 'Warning'"
Write-Host "SMTP notification channel configured"
Step 7: SCOM Dashboards and Azure Monitor Integration
# Check health state of all monitored Windows computers
Get-SCOMClass -DisplayName "Windows Computer" |
Get-SCOMClassInstance |
Select-Object DisplayName, HealthState, InMaintenanceMode |
Sort-Object HealthState |
Format-Table -AutoSize
# Get open alerts sorted by severity
Get-SCOMAlert -Criteria "ResolutionState < 255" |
Sort-Object Severity -Descending |
Select-Object Name, MonitoringObjectDisplayName, Severity, TimeRaised |
Select-Object -First 20 |
Format-Table -AutoSize
# Enable Azure Monitor integration (requires Azure Connected Machine Agent)
# Set-SCOMManagementGroupConfiguration -EnableAzureMonitorIntegration $true
# Requires workspace ID and key from Azure Log Analytics
Write-Host "SCOM Operations Console summary complete"
Conclusion
System Center Operations Manager provides enterprise-grade monitoring for Windows Server 2025 environments that require deep integration with Microsoft technologies, Active Directory-based discovery, and intelligent state-based alerting grounded in Microsoft’s own operational knowledge. By completing this setup — SQL prerequisites, Management Server installation, Management Pack imports, agent deployment, and SMTP notifications — you have a fully operational SCOM Management Group. As your environment grows, extend coverage by importing additional Management Packs for SQL Server, IIS, Active Directory, and Hyper-V, and leverage SCOM’s Azure Monitor connector to unify on-premises and cloud monitoring in a single pane of glass.