[PowerShell + XML] XML Datei als "Language File" und die Nutzung von PS Variablen

ThaRealMatix

Ensign
Registriert
Mai 2006
Beiträge
147
Hallo,

ich schreibe gerade an einem Skript, bei dem ich Übungsweise den Einsatz von XML testen möchte um das Skript bzw dessen Ausgabe Sprachunabhängig zu halten.

Das ganze funktioniert soweit auch ganz gut. Nur ein kleines Problem habe ich. Ich möchte innerhalb der xml Datei Variablen aus dem PowerShell Skript nutzen, um deren Inhalt in die Textausgabe einzupflegen.

So sieht das ganze (gekürzt aus)

xml Datei
Code:
 <?xml version="1.0"?><Language>
    <Config>
	    <GetHeartBeat>Herunterfahren</GetHeartBeat>
    </Config>
    <Logging>
       <StartBackup>Die VM $VM wird exportiert</StartBackup>
    </Logging>
</Language>

PS Skript:
Code:
Function Logging ([string]$Loggingtext="") 
{
    Write-Host (Get-Date) $Loggingtext
    $temp1 = (Get-Date -Format u)
    $temp2 = $Loggingtext
    "$temp1 - $temp2" | Out-File $LogFile -Append
}

. Logging "$($Language.Language.Logging.StartBackup)"

Was genau kann ich tun, damit die Variable $VM ausgegeben wird? So wie es jetzt wird wird einfach $VM ausgegeben

Viele Grüße

​TRM
 
Code:
function substitute([String] $str, [Hashtable] $params) {
    $params.GetEnumerator() | % {
        $str = $str.Replace($_.Name, $_.Value)
    }
    return $str
}

Function Logging ([string]$Loggingtext="", [Hashtable] $substitutions) 
{
    $Loggingtext = substitute $Loggingtext $substitutions
    Write-Host (Get-Date) $Loggingtext
    $temp1 = (Get-Date -Format u)
    $temp2 = $Loggingtext
    "$temp1 - $temp2" | Out-File $LogFile -Append
}

$wurst = "kaese"
$substitutions = @{
    '$VM' = "Dein VM-Variable";
    '$BLA' = "Eine andere Variable";
    '$wurst' = $wurst;
}

. Logging $Language.Language.Logging.StartBackup $substitutions

Sowas? :D
 
Probiers mal als Scriptblock:

Code:
Function Logging([string] $Loggingtext = "") 
{ 
	$LogText =.([scriptblock]::Create("`"$LoggingText`"")) 
	
	Write-Host(Get-Date) $LogText 
	$temp1 = (Get-Date -Format u) 
	$temp2 = $LogText 
	"$temp1 - $temp2" | Out-File $LogFile -Append 
} 

Logging "$($Language.Language.Logging.StartBackup)"
 
Zuletzt bearbeitet:
Zurück
Oben