PSRechenzentrum.psm1

<#
 .Synopsis
 Führt Initialisierungen durch und enthält Helper-Functions
#>


#requires -RunAsAdministrator
#requires -Version 5.0

# In der Psd1-Datei muss die Psm1-Datei über RootModule und nicht
# NestedModule eingebunden werden!

Set-StrictMode -Version Latest

Import-LocalizedData -BindingVariable MsgTable -FileName PSRechenzentrumMessages.psd1

function Start-Server
{
    [CmdletBinding()]
    param([String]$ServerId)
    $Server = $RZ.ServerListe.Where{$_.Id -eq $ServerId}
    $Server.Start() 
    Write-Verbose $Script:MsgTable.ServerStarted

}

function Stop-Server
{
    [CmdletBinding()]
    param([String]$ServerId)
    $Server = $RZ.ServerListe.Where{$_.Id -eq $ServerId}
    $Server.Stop() 
    Write-Verbose $Script:MsgTable.ServerStopped
}

function Initialize-Server
{
    [CmdletBinding()]
    param([String]$ServerId)
    $Server = $RZ.ServerListe.Where{$_.Id -eq $ServerId}
    $Server.Initialize() 
    Write-Verbose $Script:MsgTable.ServerInitialized
}

function Start-TestMode
{
    $K1 = [Konto]::new("Abc GmbH")
    $K2 = [Konto]::new("Def GmbH")
    $K3 = [Konto]::new("Xyz GmbH")
    $S1 = [Server]::new("HP1", "HP Pro Liant", "Small", $K1)
    $S2 = [Server]::new("HP", "HP Pro Liant", "Medium", $K2)
    $S3 = [Server]::new("Dell1", "Dell PowerEdge 2000", "Big", $K3)
    $Script:RZ = [Rechenzentrum]::New("Abc RZ")
    $RZ.AddServer($S1)
    $RZ.AddServer($S2)
    $RZ.AddServer($S3)
    # Den ersten Server starten
    Initialize-Server -ServerId $RZ.Serverliste[0].Id -Verbose
    Start-Server -ServerId $RZ.Serverliste[0].Id -Verbose
    # Den zweiten Server starten
    Initialize-Server -ServerId $RZ.Serverliste[2].Id -Verbose
    Start-Server -ServerId $RZ.Serverliste[2].Id -Verbose
    $RZ 
}

# Uses sample data from json files
function Start-TestMode2
{
    $JsonPath = Join-Path -Path $PSScriptRoot -ChildPath "AccountData.json"
    $Accounts = Get-Content -Path $JsonPath | ConvertFrom-Json
    $JsonPath = Join-Path -Path $PSScriptRoot -ChildPath "ServerData.json"
    $Servers = Get-Content -Path $JsonPath | ConvertFrom-Json
    $Script:RZ = [Rechenzentrum]::New("Virtual X Corp")
    $i = 0
    $Servers.ForEach{
        $S = [Server]::new($_.Id, $_.Description, $_.Size, $null)
        $S.Konto = [Konto]::new($Accounts[$i++].Description)
        $RZ.AddServer($S)
    }
    # Den ersten Server starten
    Initialize-Server -ServerId $RZ.Serverliste[0].Id -Verbose
    Start-Server -ServerId $RZ.Serverliste[0].Id -Verbose
    # Den zweiten Server starten
    Initialize-Server -ServerId $RZ.Serverliste[2].Id -Verbose
    Start-Server -ServerId $RZ.Serverliste[2].Id -Verbose
    $RZ 
}