Automatizarea completă a cerințelor preliminare Exchange Server cu un script PowerShell
Dacă intenționați să instalați Microsoft Exchange Server 2019 și o versiune ulterioară, vă gândiți, prin urmare, să automatizați cerințele preliminare ale Exchange Server pentru a-l implementa rapid. Vă avem acoperit.
Instalarea manuală a Microsoft Exchange Server consumă mult timp deoarece trebuie să descărcați diferitele pachete software din diferite surse.
După descărcarea și instalarea acestora, trebuie să instalați caracteristicile Windows necesare și apoi să extindeți schema, să pregătiți AD și toate domeniile.
Efectuarea manuală a acestui lucru necesită timp și, dacă pierdeți ceva, Configurarea Exchange nu va continua și nu va solicita instalarea caracteristicii lipsă.
În acest ghid, vă voi ghida printr-un script PowerShell complet automatizat care se configureazătoate componentele necesarepentru Exchange Server 2019.
Cum ar fi caracteristici Windows, .NET Framework, redistribuibile C++, UCMA și rescrierea URL.
Acest lucru se va face cu ajutorul Scriptului de cerințe preliminare Exchange Server 2019, care este o versiune complet automatizată în PowerShell.
Acest script Exchange PowerShell este rapid, ușor și sigur, prin urmare, fără erori, pentru automatizarea cerințelor Exchange Server pentru a implementa rapid Exchange Server.
Ce face scriptul automat
De obicei, știți că există mai multe software și caracteristici care trebuie instalate înainte de a instala serverul Exchange.
Acest script se va ocupa automat de instalarea următoarelor funcții și software.
- Instalează .NET Framework 4.8
- Instalează redistribuibile Visual C++ (2012 și 2013)
- Instalează rolurile și funcțiile Windows Server necesare
- Instalează modulul de rescriere URL
- Instalează UCMA 4.0
- Vă asigură că sunteți pregătit pentru pregătirea schemei/domeniului Exchange
Prin urmare, verifică și dacă unele caracteristici sau software sunt deja instalate.
Cu toate acestea, dacă găsește software-ul și caracteristica instalate deja, va sări peste pasul și va continua.
Pregătiți-vă automat și controlerul de domeniu
După cum știți, trebuie să instalăm .NET Framework, C++ Redistributables și pe controlerul de domeniu, împreună cu alte câteva caracteristici Windows.

Pentru a automatiza acest lucru, puteți rula următorul script înainte de a rula scriptul Exchange Server Automating Prerequisites.
# Active Directory Prerequisites Full Installer
# By Techi Jack
Write-Host "Starting Microsoft Exchange AD Prerequisite Installer..." -ForegroundColor Cyan
# Function to check if a redistributable is installed
function Is-VCRedistInstalled {
param ([string]$DisplayName)
$keys = @(
"HKLM:SOFTWAREMicrosoftWindowsCurrentVersionUninstall*",
"HKLM:SOFTWAREWOW6432NodeMicrosoftWindowsCurrentVersionUninstall*"
)
foreach ($key in $keys) {
if (Get-ItemProperty $key -ErrorAction SilentlyContinue | Where-Object { $_.DisplayName -like "*$DisplayName*" }) {
return $true
}
}
return $false
}
# Function to check .NET Framework 4.8 or later
function Is-DotNetFramework48Installed {
$releaseKey = Get-ItemProperty -Path "HKLM:SOFTWAREMicrosoftNET Framework SetupNDPv4Full" -ErrorAction SilentlyContinue | Select-Object -ExpandProperty Release
return ($releaseKey -ge 528040)
}
# Install .NET Framework 4.8 if not installed
if (-not (Is-DotNetFramework48Installed)) {
Write-Host "Installing .NET Framework 4.8..." -ForegroundColor Cyan
$dotNetUrl = "https://download.microsoft.com/download/2/4/8/24892799-1635-47E3-AAD7-9842E59990C3/ndp48-web.exe"
$dotNetPath = "$env:TEMPndp48-web.exe"
Invoke-WebRequest -Uri $dotNetUrl -OutFile $dotNetPath
Start-Process -FilePath $dotNetPath -ArgumentList "/quiet /norestart" -Wait
} else {
Write-Host ".NET Framework 4.8 or newer already installed, skipping..." -ForegroundColor Green
}
# C++ 2012 (x64)
if (-not (Is-VCRedistInstalled -DisplayName "Visual C++ 2012 x64")) {
Write-Host "Installing Visual C++ 2012 x64..." -ForegroundColor Cyan
$vc2012Url = "https://download.microsoft.com/download/1/6/b/16b06f60-3b20-4ff2-b699-5e9b7962f9ae/VSU_4/vcredist_x64.exe"
$vc2012Path = "$env:TEMPvcredist2012_x64.exe"
Invoke-WebRequest -Uri $vc2012Url -OutFile $vc2012Path
Start-Process -FilePath $vc2012Path -ArgumentList "/install /quiet /norestart" -Wait
} else {
Write-Host "Visual C++ 2012 x64 already installed, skipping..." -ForegroundColor Green
}
# C++ 2013 (x64)
if (-not (Is-VCRedistInstalled -DisplayName "Visual C++ 2013 x64")) {
Write-Host "Installing Visual C++ 2013 x64..." -ForegroundColor Cyan
$vc2013Url = "https://download.visualstudio.microsoft.com/download/pr/10912041/cee5d6bca2ddbcd039da727bf4acb48a/vcredist_x64.exe"
$vc2013Path = "$env:TEMPvcredist2013x64.exe"
Invoke-WebRequest -Uri $vc2013Url -OutFile $vc2013Path
Start-Process -FilePath $vc2013Path -ArgumentList "/install /quiet /norestart" -Wait
} else {
Write-Host "Visual C++ 2013 x64 already installed, skipping..." -ForegroundColor Green
}
# Define required features
$features = @(
"RSAT-ADDS"
)
Write-Host "Checking and installing Windows prerequisites..." -ForegroundColor Cyan
foreach ($feature in $features) {
$status = Get-WindowsFeature -Name $feature
if ($status.Installed) {
Write-Host "$feature is already installed. Skipping..." -ForegroundColor Yellow
} else {
Write-Host "Installing $feature..." -ForegroundColor Green
Install-WindowsFeature -Name $feature -IncludeAllSubFeature -Verbose
}
}
Write-Host "All AD prerequisites handled successfully." -ForegroundColor Magenta
Cum să utilizați Scriptul de automatizare a cerințelor preliminare Exchange
Puteți copia scriptul din fragmentul de mai jos și îl puteți salva cu orice nume cu extensia .ps1.
În cazul nostru, l-am salvat în folderul script de pe unitatea C.
# Exchange Server 2019 Prerequisites Full Installer
# By Techi Jack
Write-Host "Starting Microsoft Exchange Prerequisite Installer..." -ForegroundColor Cyan
# Function to check if a redistributable is installed
function Is-VCRedistInstalled {
param ([string]$DisplayName)
$keys = @(
"HKLM:SOFTWAREMicrosoftWindowsCurrentVersionUninstall*",
"HKLM:SOFTWAREWOW6432NodeMicrosoftWindowsCurrentVersionUninstall*"
)
foreach ($key in $keys) {
if (Get-ItemProperty $key -ErrorAction SilentlyContinue | Where-Object { $_.DisplayName -like "*$DisplayName*" }) {
return $true
}
}
return $false
}
# Function to check .NET Framework 4.8 or later
function Is-DotNetFramework48Installed {
$releaseKey = Get-ItemProperty -Path "HKLM:SOFTWAREMicrosoftNET Framework SetupNDPv4Full" -ErrorAction SilentlyContinue | Select-Object -ExpandProperty Release
return ($releaseKey -ge 528040)
}
# Install .NET Framework 4.8 if not installed
if (-not (Is-DotNetFramework48Installed)) {
Write-Host "Installing .NET Framework 4.8..." -ForegroundColor Cyan
$dotNetUrl = "https://download.microsoft.com/download/2/4/8/24892799-1635-47E3-AAD7-9842E59990C3/ndp48-web.exe"
$dotNetPath = "$env:TEMPndp48-web.exe"
Invoke-WebRequest -Uri $dotNetUrl -OutFile $dotNetPath
Start-Process -FilePath $dotNetPath -ArgumentList "/quiet /norestart" -Wait
} else {
Write-Host ".NET Framework 4.8 or newer already installed, skipping..." -ForegroundColor Green
}
# C++ 2012 (x64)
if (-not (Is-VCRedistInstalled -DisplayName "Visual C++ 2012 x64")) {
Write-Host "Installing Visual C++ 2012 x64..." -ForegroundColor Cyan
$vc2012Url = "https://download.microsoft.com/download/1/6/b/16b06f60-3b20-4ff2-b699-5e9b7962f9ae/VSU_4/vcredist_x64.exe"
$vc2012Path = "$env:TEMPvcredist2012_x64.exe"
Invoke-WebRequest -Uri $vc2012Url -OutFile $vc2012Path
Start-Process -FilePath $vc2012Path -ArgumentList "/install /quiet /norestart" -Wait
} else {
Write-Host "Visual C++ 2012 x64 already installed, skipping..." -ForegroundColor Green
}
# C++ 2013 (x64)
if (-not (Is-VCRedistInstalled -DisplayName "Visual C++ 2013 x64")) {
Write-Host "Installing Visual C++ 2013 x64..." -ForegroundColor Cyan
$vc2013Url = "https://download.visualstudio.microsoft.com/download/pr/10912041/cee5d6bca2ddbcd039da727bf4acb48a/vcredist_x64.exe"
$vc2013Path = "$env:TEMPvcredist2013x64.exe"
Invoke-WebRequest -Uri $vc2013Url -OutFile $vc2013Path
Start-Process -FilePath $vc2013Path -ArgumentList "/install /quiet /norestart" -Wait
} else {
Write-Host "Visual C++ 2013 x64 already installed, skipping..." -ForegroundColor Green
}
# Define required features
$features = @(
"Server-Media-Foundation", "NET-Framework-45-Features", "RPC-over-HTTP-proxy", "RSAT-Clustering",
"RSAT-Clustering-CmdInterface", "RSAT-Clustering-Mgmt", "RSAT-Clustering-PowerShell", "WAS-Process-Model",
"Web-Asp-Net45", "Web-Basic-Auth", "Web-Client-Auth", "Web-Digest-Auth", "Web-Dir-Browsing", "Web-Dyn-Compression",
"Web-Http-Errors", "Web-Http-Logging", "Web-Http-Redirect", "Web-Http-Tracing", "Web-ISAPI-Ext", "Web-ISAPI-Filter",
"Web-Lgcy-Mgmt-Console", "Web-Metabase", "Web-Mgmt-Console", "Web-Mgmt-Service", "Web-Net-Ext45", "Web-Request-Monitor",
"Web-Server", "Web-Stat-Compression", "Web-Static-Content", "Web-Windows-Auth", "Web-WMI", "Windows-Identity-Foundation",
"RSAT-ADDS", "NET-WCF-HTTP-Activation45", "NET-WCF-Pipe-Activation45"
)
Write-Host "Checking and installing Windows prerequisites..." -ForegroundColor Cyan
foreach ($feature in $features) {
$status = Get-WindowsFeature -Name $feature
if ($status.Installed) {
Write-Host "$feature is already installed. Skipping..." -ForegroundColor Yellow
} else {
Write-Host "Installing $feature..." -ForegroundColor Green
Install-WindowsFeature -Name $feature -IncludeAllSubFeature -Verbose
}
}
# URL Rewrite
$rewriteDll = "$env:SystemRootSystem32inetsrvrewrite.dll"
if (-not (Test-Path $rewriteDll)) {
Write-Host "Installing IIS URL Rewrite Module 2.1..." -ForegroundColor Yellow
$urlRewriteUrl = "https://download.microsoft.com/download/1/2/8/128E2E22-C1B9-44A4-BE2A-5859ED1D4592/rewrite_amd64_en-US.msi"
$urlRewritePath = "$env:TEMPrewrite_2.1_x64.msi"
Invoke-WebRequest -Uri $urlRewriteUrl -OutFile $urlRewritePath
Start-Process -FilePath "msiexec.exe" -ArgumentList "/i `"$urlRewritePath`" /quiet /norestart" -Wait
Write-Host "URL Rewrite Module installed." -ForegroundColor Cyan
} else {
Write-Host "URL Rewrite already installed, skipping..." -ForegroundColor Green
}
function Is-UCMAInstalled {
$ucmaPath = "C:Program FilesMicrosoft UCMA 4.0"
return (Test-Path $ucmaPath)
}
$UcmaDownloadUrl = "https://download.microsoft.com/download/2/c/4/2c47a5c1-a1f3-4843-b9fe-84c0032c61ec/UcmaRuntimeSetup.exe"
$UcmaInstaller = "$env:TEMPUcmaRuntimeSetup.exe"
if (-not (Is-UCMAInstalled)) {
Write-Host "UCMA 4.0 not detected." -ForegroundColor Cyan
if (-not (Test-Path $UcmaInstaller)) {
Write-Host "Downloading UCMA installer..." -ForegroundColor Cyan
Invoke-WebRequest -Uri $UcmaDownloadUrl -OutFile $UcmaInstaller -UseBasicParsing
} else {
Write-Host "UCMA installer already exists. Skipping download." -ForegroundColor Yellow
}
Write-Host "Installing UCMA 4.0..." -ForegroundColor Cyan
Start-Process -FilePath $UcmaInstaller -ArgumentList "/quiet" -Wait
Write-Host "UCMA 4.0 installation completed." -ForegroundColor Green
} else {
Write-Host "UCMA 4.0 is already installed. Skipping installation and download." -ForegroundColor Green
}
Write-Host "All prerequisites handled successfully." -ForegroundColor Magenta
- Asigurați-vă că Windows Server 2019 sau 2022 (cel mai recent corectat)
- Drepturi de administrator (Rulează ca administrator)
- Acces la internet (pentru a descărca dependențe
Deschideți PowerShell ca administrator
Navigați la folderul script și rulați scriptul
Dacă ați salvat scriptul cu numele ExchangePrerequisites.ps1, executați următoarea comandă
Exemplu:
c:scripts> .ExchangePrerequisites.ps1Odată ce scriptul începe, puteți urma instrucțiunile de pe ecran pentru a verifica procesul.
Acesta va descărca și instala automat software-ul și funcțiile Windows.


- Economisește ore de configurare manuală
- Evită cerințele preliminare ratate sau erorile de configurare Exchange
- Perfect pentru implementări de laborator, producție sau lucrări de consultanță
- Destul de sigur deoarece este un server proaspăt, așa că nu pierdeți nimic
Sfaturi de depanare rapidă
Dacă scriptul nu rulează, atuncistabiliți politica de execuțiemai întâi rulând următorul cmdlet
Set-ExecutionPolicy RemoteSigned -Scope ProcessDacă rescrierea adresei URL nu reușește, asigurați-vă că IIS este instalat mai întâi
Prin urmare, dacăUCMAnu se instalează, verificați conexiunea la internet sau dacă adresa URL a software-ului se modifică, instalați-l manual.
Notă: Cu toate acestea, acest script va instala mai întâi caracteristica IIS, astfel încât rescrierea adresei URL nu va solicita nicio eroare
Lectură sugerată:Actualizări de remediere rapidă pentru Exchange Server din aprilie 2025
Gânduri finale
Dacă configurați Exchange Server 2019 și doriți unconfigurare rapidă, fără erori, acest script vă va ușura mult munca. Marcați această pagină sau abonați-vă la canalul meu pentru mai mult conținut Exchange, Proxmox și Mailcow.
Sper să vă placă și câteva tutoriale Microsoft Exchange
Cum să reînnoiți certificatul de Federație Exchange
Scriptul PowerShell de verificare a stării serverului Exchange
Prin urmare, dacă vă confruntați cu orice problemă cu Exchange Server, local sau Hybrid Exchange
Simțiți-vă liber să ne contactați la[email protected]
Mai mult, vezi fiecare pas în acțiune, inclusiv instalarea în timp real și ceea ce face fiecare componentă.

![[2025 Ultimele] 4 moduri de a debloca iPhone Sprint](https://elsefix.com/tech/afton/wp-content/uploads/cache/2025/08/unlock-sprint-iphone.jpg)










![Achiziția licenței de utilizator final a eșuat, ID eveniment 1014 [Remediere]](https://elsefix.com/tech/tejana/wp-content/uploads/2024/11/acquisition-of-end-user-license-failed.png)

