🧩For the first server

Важно!!!
Rename-Computer -NewName "SRV-CORE1" -Restart

Get-NetAdapter
Get-NetIPAddress -InterfaceAlias "Ethernet" | Remove-NetIPAddress -Confirm:$false
Get-NetIPConfiguration -InterfaceAlias "Ethernet" | Remove-NetRoute -Confirm:$false

New-NetIPAddress -InterfaceAlias "Ethernet" -IPAddress 10.0.0.1 -PrefixLength 24 -DefaultGateway 10.0.0.254
Set-DnsClientServerAddress -InterfaceAlias "Ethernet" -ServerAddresses 127.0.0.1
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False
ping 10.0.0.2
Enable-PSRemoting -Force
Test-WSMan 10.0.0.2
Install-WindowsFeature AD-Domain-Services, DNS, DHCP -IncludeManagementTools
Get-WindowsFeature AD-Domain-Services, DNS, DHCP
Install-ADDSForest -DomainName "main.local" -DomainNetbiosName "MAIN" -SafeModeAdministratorPassword (ConvertTo-SecureString "MAINpass123!" -AsPlainText -Force)
Get-ADDomain
Get-ADForest
whoami
New-ADUser -Name "Ivan Petrov" -GivenName "Ivan" -Surname "Petrov" -SamAccountName "ipetrov" -UserPrincipalName "ipetrov@main.local" -AccountPassword (ConvertTo-SecureString "SmartPass123!" -AsPlainText -Force) -Enabled $true
New-ADUser -Name "Anna Ivanova" -GivenName "Anna" -Surname "Ivanova" -SamAccountName "aivanova" -UserPrincipalName "aivanova@main.local" -AccountPassword (ConvertTo-SecureString "AlsoSmartPass123!" -AsPlainText -Force) -Enabled $true
New-ADGroup -Name "Support" -GroupScope Global -GroupCategory Security
New-ADGroup -Name "DevOps" -GroupScope Global -GroupCategory Security
Add-ADGroupMember -Identity "Support" -Members "ipetrov"
Add-ADGroupMember -Identity "DevOps" -Members "aivanova"
Get-ADUser -Filter * | Select-Object Name, SamAccountName
Get-ADGroupMember "Support"
Get-ADGroupMember "DevOps"
Get-DnsServerZone
Get-DnsServerResourceRecord -ZoneName "main.local"
Resolve-DnsName SRV-CORE1
Resolve-DnsName main.local
ping SRV-CORE1
Add-DhcpServerInDC -DnsName "SRV-CORE1.main.local" -IPAddress 10.0.0.1
Get-DhcpServerInDC
Add-DhcpServerv4Scope -Name "MainScope" -StartRange 10.0.0.100 -EndRange 10.0.0.150 -SubnetMask 255.255.255.0 -State Active
Set-DhcpServerv4OptionValue -ScopeId 10.0.0.0 -Router 10.0.0.254
Set-DhcpServerv4OptionValue -ScopeId 10.0.0.0 -DnsServer 10.0.0.1 -DnsDomain main.local
Get-DhcpServerv4Scope
Get-DhcpServerv4OptionValue -ScopeId 10.0.0.0
New-GPO -Name "DisableTaskManager"
Set-GPRegistryValue -Name "DisableTaskManager" `
  -Key "HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System" `
  -ValueName "DisableTaskMgr" -Type DWord -Value 1
New-ADOrganizationalUnit -Name "SupportOU"
Get-ADUser ipetrov | Move-ADObject -TargetPath "OU=SupportOU,DC=main,DC=local"
New-GPLink -Name "DisableTaskManager" -Target "OU=SupportOU,DC=main,DC=local"
Get-GPO -Name "DisableTaskManager"
Get-GPRegistryValue -Name "DisableTaskManager" -Key "HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System"
Get-ADOrganizationalUnit -Filter 'Name -eq "SupportOU"'
Get-ADUser ipetrov | Select-Object DistinguishedName
Get-GPInheritance -Target "OU=SupportOU,DC=main,DC=local"
Install-WindowsFeature FS-DFS-Namespace, FS-Resource-Manager
New-Item -Path "C:\\SharedFolder" -ItemType Directory
New-SmbShare -Name "SharedFolder" -Path "C:\\SharedFolder" -FullAccess "Everyone"
New-DfsnRoot -TargetPath "\\\\SRV-CORE1\\SharedFolder" -Path "\\\\main.local\\share" -Type DomainV2
Get-DfsnRoot
New-DfsnFolder -Path "\\\\main.local\\share\\Docs" -TargetPath "\\\\SRV-CORE1\\SharedFolder"
Get-DfsnFolder -Path "\\\\main.local\\share\\Docs"
notepad C:\\Scripts\\Set-FsrmQuota.ps1
Set-ExecutionPolicy RemoteSigned -Scope LocalMachine -Force
PowerShell -ExecutionPolicy Bypass -File C:\\Scripts\\Set-FsrmQuota.ps1
Get-FsrmQuota
Install-WindowsFeature Web-Server
Get-Service W3SVC
Set-Content -Path "C:\\inetpub\\wwwroot\\index.html" -Value "<html><body><h1>Сервер работает!</h1></body></html>"
Import-Module DhcpServer
Add-DhcpServerv4Failover `
-Name "DHCPFailover" `
-ScopeId 10.0.0.0 `
-PartnerServer "SRV-CORE2" `
-SharedSecret "MySuperSecret123!" `
-AutoStateTransition $true `
-StateSwitchInterval 00:10:00 `
-MaxClientLeadTime 01:00:00 `
-LoadBalancePercent 50 `
-Force
Get-DhcpServerv4Failover

New-Item -Path "C:\\ReplicationData" -ItemType Directory
Install-WindowsFeature FS-DFS-Replication
Import-Module DFSR
New-DfsReplicationGroup -GroupName "ReplicationGroup"
Add-DfsrMember -GroupName "ReplicationGroup" -ComputerName "SRV-CORE1"
Add-DfsrMember -GroupName "ReplicationGroup" -ComputerName "SRV-CORE2"
New-DfsReplicatedFolder -GroupName "ReplicationGroup" -FolderName "ReplicationData"
Set-DfsrMembership -GroupName "ReplicationGroup" -FolderName "ReplicationData" `
  -ComputerName "SRV-CORE1" -ContentPath "C:\\ReplicationData"
Set-DfsrMembership -GroupName "ReplicationGroup" -FolderName "ReplicationData" `
  -ComputerName "SRV-CORE2" -ContentPath "C:\\ReplicationData"
Add-DfsrConnection -GroupName "NewReplicationGroup" `
  -SourceComputerName "SRV-CORE1" -DestinationComputerName "SRV-CORE2"
Update-DfsrConfigurationFromAD
Restart-Service DFSR
Set-Content -Path "C:\\ReplicationData\\test.txt" -Value "Replicated test $(Get-Date)"
Sync-DfsReplicationGroup -GroupName "NewReplicationGroup" `
  -SourceComputerName "SRV-CORE1" `
  -DestinationComputerName "SRV-CORE2" `
  -DurationInMinutes 1
Get-Content "C:\\ReplicationData\\testix.txt"

New-SmbShare -Name "ReplicationDataShare" -Path "C:\\ReplicationData" -FullAccess "Everyone"
Robocopy "C:\\ReplicationData" "\\\\SRV-CORE2\\ReplicationDataShare" /MIR /Z /R:3 /W:5 /NP /LOG:C:\\replication_log.txt

Import-Module ScheduledTasks
notepad C:\\Scripts\\RunRobocopy.ps1
schtasks /Create /SC DAILY /TN "RobocopyReplicationDaily" /TR "powershell.exe -NoProfile -ExecutionPolicy Bypass -File C:\\Scripts\\RunRobocopy.ps1" /ST 23:00 /RU SYSTEM
schtasks /Query /TN "RobocopyReplicationDaily" /V

automation
Rename-Computer -NewName "SRV-CORE1" -Restart
robocopy D:\\ C:\\ /E
Set-ExecutionPolicy RemoteSigned -Scope LocalMachine -Force
cd C:\\automation
.\\01-configure-network.ps1
.\\02-install-roles.ps1
.\\03-domain-setup-primary.ps1
.\\04-ad-users-groups.ps1
.\\05-dns-dhcp-prymary.ps1
.\\06-gpo-setup.ps1
.\\07-dfs-setup.ps1
.\\08-iis-setup.ps1
.\\09-failover-setup.ps1
.\\10-replication-robocopy-primary.ps1

🧩For the second server

Важно!!!
Rename-Computer -NewName "SRV-CORE2" -Restart

Get-NetAdapter
Get-NetIPAddress -InterfaceAlias "Ethernet" | Remove-NetIPAddress -Confirm:$false
Get-NetIPConfiguration -InterfaceAlias "Ethernet" | Remove-NetRoute -Confirm:$false
New-NetIPAddress -InterfaceAlias "Ethernet" -IPAddress 10.0.0.2 -PrefixLength 24 -DefaultGateway 10.0.0.254
Set-DnsClientServerAddress -InterfaceAlias "Ethernet" -ServerAddresses 10.0.0.1
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False
ping 10.0.0.1
Enable-PSRemoting -Force
Test-WSMan 10.0.0.1
Add-Computer -DomainName "main.local" -Credential "main\\Administrator" -Restart
whoami
Get-WindowsFeature AD-Domain-Services
Install-WindowsFeature AD-Domain-Services
Import-Module ADDSDeployment
Install-ADDSDomainController -DomainName "main.local" -Credential (Get-Credential) -InstallDns:$true -Force
Get-ADDomainController -Filter *
Get-WindowsFeature DNS
Get-DnsServerZone
Install-WindowsFeature DHCP -IncludeManagementTools
Add-DhcpServerInDC -DnsName "SRV-CORE2.main.local" -IPAddress 10.0.0.2
Get-DhcpServerInDC
Get-DhcpServerv4Failover
Get-DhcpServerv4Scope
repadmin /replsummary
repadmin /showrepl
nslookup main.local
Get-DhcpServerv4Scope
Get-DhcpServerv4Lease
Invoke-WebRequest <http://10.0.0.1> -UseBasicParsing

New-Item -Path "C:\\ReplicationData" -ItemType Directory
Install-WindowsFeature FS-DFS-Replication
Import-Module DFSR
Update-DfsrConfigurationFromAD
Restart-Service DFSR
Set-Content -Path "C:\\ReplicationData\\testix.txt" -Value "Saebalo"
Get-Content "C:\\ReplicationData\\test.txt"

New-SmbShare -Name "ReplicationDataShare" -Path "C:\\ReplicationData" -FullAccess "Everyone"
Get-Content "C:\\ReplicationData\\test.txt"

automation
Rename-Computer -NewName "SRV-CORE2" -Restart
robocopy D:\\ C:\\ /E
Set-ExecutionPolicy RemoteSigned -Scope LocalMachine -Force
cd C:\\automation
.\\01-configure-network.ps1
.\\02-install-roles.ps1
.\\03-domain-setup-secondary.ps1
.\\03b-promote-secondary.ps1
.\\05-dns-dhcp-secondary.ps1
.\\10-replication-robocopy-secondary.ps1

🧩 Client-Test

# Test-Infrastructure.ps1

$errors = 0

# 1. DNS resolution
try {
    Resolve-DnsName main.local -ErrorAction Stop | Out-Null
    Write-Host " DNS resolution successful."
} catch {
    Write-Warning " DNS resolution failed."
    $errors++
}

# 2. Shared folder access
if (Test-Path "\\\\main.local\\share") {
    Write-Host " Shared folder accessible."
} else {
    Write-Warning " Shared folder not accessible."
    $errors++
}

# 3. Domain availability
try {
    Get-ADDomain | Out-Null
    Write-Host " Domain is reachable."
} catch {
    Write-Warning " Domain is not reachable."
    $errors++
}

# 4. DHCP check
$ip = (Get-NetIPConfiguration | Where-Object { $_.IPv4DefaultGateway -ne $null }).IPv4Address.IPAddress
if ($ip) {
    Write-Host " IP address assigned via DHCP: $ip"
} else {
    Write-Warning " IP address not assigned via DHCP."
    $errors++
}

# 5. IIS website check
try {
    $resp = Invoke-WebRequest -Uri "<http://10.0.0.1>" -UseBasicParsing -TimeoutSec 5
    if ($resp.StatusCode -eq 200) {
        Write-Host " IIS site is reachable (HTTP 200)."
    } else {
        throw "Status code: $($resp.StatusCode)"
    }
} catch {
    Write-Warning " IIS site not reachable: $_"
    $errors++
}

# 6. DFS folder access
if (Test-Path "\\\\main.local\\share\\Docs") {
    Write-Host " DFS folder reachable."
} else {
    Write-Warning " DFS folder not reachable."
    $errors++
}

# 7. Additional Domain Controller check
try {
    $dc = Get-ADDomainController -Filter { Name -eq "SRV-CORE2" }
    Write-Host " Secondary Domain Controller is available: $($dc.Name)"
} catch {
    Write-Warning " Secondary Domain Controller not found."
    $errors++
}

# 8. Robocopy Replication Check
$replicatedFile = "\\\\SRV-CORE2\\ReplicationDataShare\\replica-test.txt"

if (Test-Path $replicatedFile) {
    Write-Host " Replication working — file exists on secondary."
} else {
    Write-Warning " Replication may not be working — test file not found on secondary."
    $errors++
}

# === Summary ===
if ($errors -eq 0) {
    Write-Host "`n All checks passed. Infrastructure is healthy."
} else {
    Write-Warning "`n Number of issues detected: $errors"
}