Table of Contents

This guide provides a quick-start overview of Windows configuration for both servers and workstations. For comprehensive configuration management including PowerShell DSC, automation, and package management, see Configuration Management.

Quick Configuration Paths

For Windows Server Administrators

Initial Server SetupConfiguration Management: Server Initial Configuration

Key topics:

  • Post-installation configuration
  • Network settings
  • Domain join procedures
  • Essential software installation

Server Roles ConfigurationIndex: Server Roles and Features

Available roles:

  • Active Directory Domain Services
  • DNS Server
  • DHCP Server
  • File Services
  • Hyper-V

Group Policy ManagementConfiguration Management: Group Policy Management

Group Policy operations:

  • Creating and linking GPOs
  • Registry-based policies
  • Audit policies
  • Software deployment

For Workstation Administrators

Enterprise Workstation SetupConfiguration Management: Workstation Configuration

Key areas:

  • Automated deployment
  • Software installation
  • User profile management
  • Default application associations

Package ManagementConfiguration Management: winget

Package management:

  • Installing applications
  • Bulk deployment
  • Configuration files
  • Enterprise software distribution

Core Configuration Areas

Initial Server Setup

Basic server configuration after installation:

# Set computer name and restart
Rename-Computer -NewName "SERVER01" -Restart

# Configure static IP address
$Adapter = Get-NetAdapter | Where-Object Status -eq "Up"
New-NetIPAddress -InterfaceIndex $Adapter.InterfaceIndex `
    -IPAddress "192.168.1.100" `
    -PrefixLength 24 `
    -DefaultGateway "192.168.1.1"

# Set DNS servers
Set-DnsClientServerAddress -InterfaceIndex $Adapter.InterfaceIndex `
    -ServerAddresses "192.168.1.10","192.168.1.11"

# Join domain (credential prompt will appear)
Add-Computer -DomainName "contoso.com" -Credential (Get-Credential) -Restart

For detailed server configuration including Server Core setup, see Configuration Management.

Windows Features Management

Install common Windows features:

# Install IIS with management tools
Install-WindowsFeature Web-Server -IncludeManagementTools

# Install Hyper-V
Install-WindowsFeature Hyper-V -IncludeManagementTools -Restart

# Install Active Directory tools
Install-WindowsFeature RSAT-ADDS -IncludeManagementTools

PowerShell Configuration

Basic PowerShell setup:

# Set execution policy
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

# Install PowerShellGet and update modules
Install-Module -Name PowerShellGet -Force
Update-Module PowerShellGet

For advanced PowerShell configuration including DSC and remoting, see Configuration Management: PowerShell.

Windows Workstation Configuration

Enterprise Workstation Setup

Quick workstation deployment script:

# Basic workstation configuration
param(
    [Parameter(Mandatory)]
    [string]$ComputerName,
    
    [Parameter(Mandatory)]
    [string]$DomainName
)

# Rename computer
Rename-Computer -NewName $ComputerName -Force

# Configure network (DHCP)
$Adapter = Get-NetAdapter | Where-Object Status -eq "Up" | Select-Object -First 1
Set-DnsClientServerAddress -InterfaceIndex $Adapter.InterfaceIndex `
    -ServerAddresses "192.168.1.10","192.168.1.11"

# Install essential software via winget
$EssentialApps = @(
    "Microsoft.VisualStudioCode",
    "Google.Chrome",
    "7zip.7zip",
    "Adobe.Acrobat.Reader.64-bit"
)

foreach ($App in $EssentialApps) {
    winget install $App --silent --accept-source-agreements --accept-package-agreements
}

# Join domain
Add-Computer -DomainName $DomainName -Credential (Get-Credential) -Restart

User Profile Management

Configure default user settings:

# Set default desktop wallpaper
$WallpaperPath = "C:\Windows\Web\Wallpaper\Corporate\wallpaper.jpg"
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" `
    -Name "Wallpaper" -Value $WallpaperPath

# Disable Windows Search indexing for better performance
Stop-Service -Name "WSearch" -Force
Set-Service -Name "WSearch" -StartupType Disabled

For comprehensive user profile management and Group Policy configuration, see Configuration Management.

Registry Management

Common Registry Configurations

# Performance optimizations
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\PriorityControl" `
    -Name "Win32PrioritySeparation" -Value 2

# Security settings
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa" `
    -Name "LimitBlankPasswordUse" -Value 1

# Disable unnecessary services
$ServicesToDisable = @("Fax", "WSearch", "Themes")
foreach ($Service in $ServicesToDisable) {
    Set-Service -Name $Service -StartupType Disabled -ErrorAction SilentlyContinue
}

Registry Backup

Important

Always backup the registry before making changes. Test changes in a non-production environment first.

# Export registry keys for backup
$BackupPath = "C:\Backup\Registry"
New-Item -ItemType Directory -Path $BackupPath -Force

$KeysToBackup = @(
    "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run",
    "HKLM:\SYSTEM\CurrentControlSet\Services"
)

foreach ($Key in $KeysToBackup) {
    $KeyName = ($Key -split "\\")[-1]
    $FileName = "$BackupPath\$KeyName-$(Get-Date -Format 'yyyyMMdd').reg"
    reg export $Key.Replace("HKLM:\", "HKEY_LOCAL_MACHINE\") $FileName /y
}

Monitoring and Maintenance

System Health Check

Quick system health assessment:

function Get-SystemHealth {
    [CmdletBinding()]
    param()
    
    # CPU usage
    $CPU = Get-WmiObject -Class Win32_Processor | 
        Measure-Object -Property LoadPercentage -Average
    
    # Memory usage
    $OS = Get-WmiObject -Class Win32_OperatingSystem
    $MemoryUsedPercent = ($OS.TotalVisibleMemorySize - $OS.FreePhysicalMemory) / 
        $OS.TotalVisibleMemorySize * 100
    
    # Disk space
    $Disks = Get-WmiObject -Class Win32_LogicalDisk | Where-Object DriveType -eq 3
    
    # Failed services
    $FailedServices = Get-Service | 
        Where-Object {$_.Status -eq "Stopped" -and $_.StartType -eq "Automatic"}
    
    [PSCustomObject]@{
        ComputerName = $env:COMPUTERNAME
        CPUUsage = [math]::Round($CPU.Average, 2)
        MemoryUsage = [math]::Round($MemoryUsedPercent, 2)
        DiskSpace = $Disks | Select-Object DeviceID, 
            @{N='FreeGB';E={[math]::Round($_.FreeSpace/1GB,2)}},
            @{N='SizeGB';E={[math]::Round($_.Size/1GB,2)}}
        FailedServices = $FailedServices.Count
    }
}

# Run health check
Get-SystemHealth

For comprehensive monitoring solutions, see Configuration Management: Monitoring.

Next Steps

Essential Reading

Common Tasks

External Resources

This overview provides quick reference for common configuration tasks. For detailed procedures, automation scripts, and advanced configuration management, refer to the comprehensive documentation linked throughout this guide.