Files

206 lines
4.6 KiB
PowerShell
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
############################################################
# PART 5.1
#
# Part 5.1 .NET Framework prüfen
############################################################
function Test-DotNetFramework {
Write-Log "Prüfe .NET Framework"
$RegPath = "HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full"
if(!(Test-Path $RegPath))
{
Stop-Installation ".NET Framework wurde nicht gefunden."
}
$Release = (Get-ItemProperty $RegPath).Release
Write-Log ".NET Release : $Release"
if($Release -lt 528040)
{
Stop-Installation ".NET Framework 4.8 oder höher wird benötigt."
}
Write-Log ".NET Framework OK"
}
############################################################
# PART 5.2
#
# Part 5.2 Visual C++ Redistributables prüfen
############################################################
function Test-VisualCRedistributables {
Write-Log "Prüfe Visual C++ Redistributables"
$VC = Get-ItemProperty `
HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*,
HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* `
-ErrorAction SilentlyContinue |
Where-Object {
$_.DisplayName -like "*Microsoft Visual C++*"
}
if(!$VC)
{
Write-Log "Keine Visual C++ Redistributables gefunden."
Write-Log "Werden während der Veeam Installation installiert."
return
}
foreach($Item in $VC)
{
Write-Log "$($Item.DisplayName) $($Item.DisplayVersion)"
}
}
############################################################
# PART 5.3
#
# Part 5.3 Installationspfade vorbereiten
############################################################
function Initialize-InstallDirectories {
Write-Log "Erstelle Installationsverzeichnisse"
$Folders = @(
$InstallPath,
$CatalogPath,
$IRCachePath
)
foreach($Folder in $Folders)
{
if(!(Test-Path $Folder))
{
New-Item `
-ItemType Directory `
-Path $Folder `
-Force |
Out-Null
Write-Log "Ordner erstellt: $Folder"
}
else
{
Write-Log "Ordner vorhanden: $Folder"
}
}
}
############################################################
# PART 5.4
#
# Part 5.4 Schreibtest
############################################################
function Test-WritePermissions {
Write-Log "Prüfe Schreibrechte"
foreach($Folder in @($InstallPath,$CatalogPath,$IRCachePath))
{
$TestFile = Join-Path $Folder "WriteTest.tmp"
try
{
"TEST" | Set-Content $TestFile
Remove-Item $TestFile -Force
Write-Log "$Folder beschreibbar."
}
catch
{
Stop-Installation "Keine Schreibrechte auf $Folder."
}
}
}
############################################################
# PART 5.5
#
# Part 5.5 Ports prüfen
############################################################
function Test-Ports {
Write-Log "Prüfe benötigte Ports"
$Ports = @(
$VeeamServicePort,
$GuestCatalogPort,
$SecureConnectionPort,
$RestServicePort
)
foreach($Port in $Ports)
{
$Connection = Get-NetTCPConnection `
-State Listen `
-ErrorAction SilentlyContinue |
Where-Object LocalPort -eq $Port
if($Connection)
{
Write-Log "WARNUNG: Port $Port ist bereits belegt."
}
else
{
Write-Log "Port $Port verfügbar."
}
}
}
############################################################
# PART 5.6
#
# Part 5.6 Windows Firewall prüfen
############################################################
function Test-Firewall {
Write-Log "Prüfe Windows Firewall"
$Profiles = Get-NetFirewallProfile
foreach($Profile in $Profiles)
{
Write-Log "$($Profile.Name): Enabled=$($Profile.Enabled)"
}
}
############################################################
# PART 5.7
#
# Part 5.7 Voraussetzungen prüfen
############################################################
function Invoke-Prerequisites {
Write-Log ""
Write-Log "===================================="
Write-Log "Prüfung der Voraussetzungen"
Write-Log "===================================="
Test-DotNetFramework
Test-VisualCRedistributables
Initialize-InstallDirectories
Test-WritePermissions
Test-Ports
Test-Firewall
Write-Log "Voraussetzungen erfolgreich geprüft."
}