🔧 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!"