🔧 RunRobocopy.ps1 - Simulate DFSR from SRV-CORE1 to SRV-CORE2

#RunRobocopy.ps1
Robocopy "$ReplicationPath" "$RemotePath" /MIR /Z /R:3 /W:5 /NP /LOG:C:\\replication_log.txt

🔧 check-winrm.ps1 - checking WinRM between SRV-CORE1 and SRV-CORE2

# check-winrm.ps1
. "$PSScriptRoot\\..\\config.ps1"

Write-Host "`n[+] Testing WinRM between nodes..."

foreach ($target in @($PrimaryHostname, $SecondaryHostname)) {
    Write-Host "Checking $target..."
    try {
        Test-WSMan $target -ErrorAction Stop
        Write-Host "WinRM is working on $target`n"
    } catch {
        Write-Warning "WinRM failed on $target"
    }
}

🔧 Script for creating a replication task via TaskManager (works only with GUI)

Import-Module ScheduledTasks
$action = New-ScheduledTaskAction -Execute "powershell.exe" -Argument '-NoProfile -WindowStyle Hidden -Command "Robocopy C:\\ReplicationData \\\\SRV-CORE2\\ReplicationDataShare /MIR /Z /R:3 /W:5 /NP /LOG:C:\\replication_log.txt"'

$trigger = New-ScheduledTaskTrigger -Daily -At "23:00"

Register-ScheduledTask -TaskName "RobocopyReplicationDaily" `
    -Action $action `
    -Trigger $trigger `
    -User "SYSTEM" `
    -RunLevel Highest `
    -Description "Ежедневная синхронизация данных на SRV-CORE2 через Robocopy в 23:00"

🔧 config.ps1 - Data configurations for future scripts to work

# config.ps1

# ==== NETWORK SETTINGS ====
$PrimaryHostname    = "SRV-CORE1"
$PrimaryIP          = "10.0.0.1"
$SecondaryHostname  = "SRV-CORE2"
$SecondaryIP        = "10.0.0.2"
$SubnetMask         = "255.255.255.0"
$Gateway            = "10.0.0.254"
$DnsServerPrimary   = "127.0.0.1"      
$DnsServerSecondary = $PrimaryIP 

# ==== DOMAIN SETTINGS ====
$DomainName         = "main.local"
$DomainNetbiosName  = "MAIN"
$SafeModePassword   = ConvertTo-SecureString "MAINpass123!" -AsPlainText -Force
$DomainAdminPassword   = ConvertTo-SecureString "Smart123" -AsPlainText -Force  
$LocalAdminPassword    = ConvertTo-SecureString "Smart123" -AsPlainText -Force

# ==== DHCP SETTINGS ====
$DhcpScopeStart     = "10.0.0.100"
$DhcpScopeEnd       = "10.0.0.200"
$DhcpSubnet         = "10.0.0.0"
$DhcpMask           = "255.255.255.0"
$DhcpLeaseDuration  = ([TimeSpan]::FromDays(7))

# ==== DFS / SHARE SETTINGS ====
$NamespaceRoot      = "\\\\main.local\\share"
$NamespaceName      = "share"
$SharedFolderPath   = "C:\\SharedFolder"
$QuotaLimitBytes    = 209715200 #200MB

# ==== IIS SETTINGS ====
$IISSiteName        = "TestSite"
$IISSitePort        = 80
$IISSitePath        = "C:\\inetpub\\wwwroot"

# ==== GENERAL ====
$AdminUser          = "MAIN\\Administrator"

🔧 Set-FsrmQuota.ps1 - Creating a quota and linking

# Set-FsrmQuota.ps1
# Получаем доступ к менеджеру квот
$quotaManager = New-Object -ComObject "Fsrm.FsrmQuotaManager"

# Создаём квоту для указанного пути
$quota = $quotaManager.CreateQuota("C:\\SharedFolder")

# Устанавливаем лимит в 200 MB (в байтах: 200 * 1024 * 1024)
$quota.QuotaLimit = 209715200

# Применяем квоту
$quota.Commit()

Write-Host "The quota has been successfully created!"