Files
syno-scripts/Powershell/VEEAM/Modules/part6.ps1
T

221 lines
4.7 KiB
PowerShell
Executable File
Raw 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 6.1
#
# AnswerFile kopieren
############################################################
function Copy-AnswerFile {
Write-Log "Kopiere Antwortdatei"
$Script:AnswerFile = Join-Path `
$WorkDir `
"VbrAnswerFile_install.xml"
if(Test-Path $AnswerFile)
{
Remove-Item `
$AnswerFile `
-Force
}
Copy-Item `
-Path $AnswerFileSource `
-Destination $AnswerFile `
-Force
if(!(Test-Path $AnswerFile))
{
Stop-Installation "Antwortdatei konnte nicht kopiert werden."
}
attrib -R $AnswerFile
Write-Log "Antwortdatei erfolgreich kopiert"
}
############################################################
# PART 6.2
#
# Part 6.2 XML laden
############################################################
function Open-AnswerFile {
Write-Log "Lade XML"
try
{
[xml]$Script:AnswerXML =
Get-Content `
$AnswerFile `
-Encoding UTF8
}
catch
{
Stop-Installation "XML konnte nicht geladen werden."
}
}
############################################################
# PART 6.3
#
# Part 6.3 XML-Eigenschaft setzen
############################################################
function Set-VBRProperty {
param(
[Parameter(Mandatory)]
[string]$Name,
[Parameter(Mandatory)]
[string]$Value
)
$Node = $AnswerXML.
unattendedInstallationConfiguration.
properties.
property |
Where-Object Name -eq $Name
if(!$Node)
{
Write-Log "XML Property $Name nicht gefunden."
return
}
$Node.value = $Value
Write-Log "$Name = $Value"
}
############################################################
# PART 6.4
#
# Part 6.4 XML konfigurieren
############################################################
function Set-AnswerFileConfiguration {
Write-Log "Konfiguriere XML"
Set-VBRProperty "ACCEPT_EULA" "1"
Set-VBRProperty "ACCEPT_LICENSING_POLICY" "1"
Set-VBRProperty "ACCEPT_THIRDPARTY_LICENSES" "1"
Set-VBRProperty "ACCEPT_REQUIRED_SOFTWARE" "1"
if($UseLicense)
{
Set-VBRProperty "VBR_LICENSE_FILE" $LicenseTarget
}
else
{
Set-VBRProperty "VBR_LICENSE_FILE" "0"
}
Set-VBRProperty "VBR_SQLSERVER_INSTALL" "0"
Set-VBRProperty "VBR_SQLSERVER_ENGINE" "0"
Set-VBRProperty "VBR_SQLSERVER_SERVER" $SQLConnection
Set-VBRProperty "VBR_SQLSERVER_DATABASE" $DatabaseName
Set-VBRProperty "VBR_SQLSERVER_AUTHENTICATION" "0"
Set-VBRProperty "VBR_ENTRAID_DATABASE_INSTALL" "0"
Set-VBRProperty "INSTALLDIR" $InstallPath
Set-VBRProperty "VM_CATALOGPATH" $CatalogPath
Set-VBRProperty "VBR_IRCACHE" $IRCachePath
Set-VBRProperty "VBRC_SERVICE_PORT" $GuestCatalogPort
Set-VBRProperty "VBR_SERVICE_PORT" $VeeamServicePort
Set-VBRProperty "VBR_SECURE_CONNECTIONS_PORT" $SecureConnectionPort
Set-VBRProperty "VBR_RESTSERVICE_PORT" $RestServicePort
Set-VBRProperty "REBOOT_IF_REQUIRED" "$RebootRequired"
foreach($Plugin in $Plugins.Keys)
{
Set-VBRProperty `
$Plugin `
"$($Plugins[$Plugin])"
}
}
############################################################
# PART 6.5
#
# Part 6.5 XML validieren
############################################################
function Test-AnswerFile {
Write-Log "Prüfe XML"
if(!$AnswerXML.unattendedInstallationConfiguration)
{
Stop-Installation "Ungültige XML."
}
if(!$AnswerXML.unattendedInstallationConfiguration.properties)
{
Stop-Installation "XML Properties fehlen."
}
Write-Log "XML erfolgreich geprüft."
}
############################################################
# PART 6.6
#
# Part 6.6 XML speichern
############################################################
function Save-AnswerFile {
Write-Log "Speichere XML"
try
{
$Writer = New-Object System.Xml.XmlTextWriter(
$AnswerFile,
[System.Text.Encoding]::UTF8
)
$Writer.Formatting = "Indented"
$AnswerXML.Save($Writer)
$Writer.Close()
Write-Log "Antwortdatei gespeichert"
}
catch
{
Stop-Installation "Antwortdatei konnte nicht gespeichert werden.`n$($_.Exception.Message)"
}
}
############################################################
# PART 6.7
#
# Part 6.7 Gesamtablauf
############################################################
function Initialize-AnswerFile {
Copy-AnswerFile
Open-AnswerFile
Set-AnswerFileConfiguration
Test-AnswerFile
Save-AnswerFile
}