Hallo zusammen,
ich sehe leider den Wald vor lauter Bäumen nicht...
Ich habe ein Script das in der Registry überprüft ob es einen bestimmten Pfad und bestimmte Schlüssel gibt. Wenn es den Pfad oder Schlüssel nicht gibt werden sie angelegt. Funktioniert soweit problemlos.
Wenn die Schlüssel schon da sind, sollen den Feldern (wenn sie leer sind) Werte übergeben werden. Wenn bereits was drin steht, sollen Werte *hinzugefügt* werden, der bisherige Inhalt muss also erhalten bleiben.
Das ganze über zwei Arrays. Eins für die Schlüssel, eins für die Werte die den Schlüsseln zugeordnet werden sollen.
Nur das hinzufügen klappt nicht. Leider habe ich von der Powershell noch nicht wirklich viel Ahnung und tappe komplett im dunkeln...
Code:
# Set parameters
$pathVGOC="HKLM:\SOFTWARE\VGOC"
$pathOPSMGR="HKLM:\SOFTWARE\VGOC\OperationsManager"
$value="key1","key2","key3","key4","key5"
$data="t1","t2","t3","t4","t5"
# Function which can be called to add the values defined before
function addValues
{
for ($i = 0; $i -lt $value.length ; $i++)
{
if (Get-ItemProperty -name $value[$i] -path $pathOPSMGR -erroraction silentlycontinue)
{
# Get current value
$a = Get-ItemProperty $pathOPSMGR -name $value[$i]
# Change value (adds the variable $value[$i])
$a.$value[$i] = $a.$value[$i] + ";" + $data[$i]
# Write value
Set-ItemProperty -name $value[$i] -path $pathOPSMGR $a.$value[$i]
}
else
{
New-ItemProperty $pathOPSMGR -name $value[$i] -value $data[$i] -propertytype "String"
}
}
}
if (Test-Path $pathVGOC)
{
Write-Host "Path exists:" $pathVGOC
if (Test-Path $pathOPSMGR)
{
Write-Host "Path exists:" $pathOPSMGR
addValues
}
else
{
New-Item –path $pathVGOC -name "OperationsManager"
Write-Host "Path created:" $pathOPSMGR
addValues
}
}
else
{
New-Item –path "HKLM:\SOFTWARE" -name "Voith Group of Companies TEST"
Write-Host "Path created:" $pathVGOC
New-Item –path $pathVGOC -name "OperationsManager"
Write-Host "Path created:" $pathOPSMGR
addValues
}
Vielleicht mag das jemand mal testen, und zwar ZWEIMAL hintereinander. Beim ersten Mal werden die Werte im Pfad angelegt und die Werte geschrieben. Beim zweiten Mal sollten die Werte erweitert, also hinzugefügt werden, ohne dass die ersten überschrieben werden. (In dem Beispiel müsste also die Werte nach dem zweiten Durchlauf doppelt vorhanden sein. In der Realität kann es vorkommen, dass die Schlüssel einfach schon da sind und fremde Werte drin stehen, die auf jeden Fall erhalten bleiben müssen und nur durch die im Skript erweitert).
Nachtrag: Das die Funktion einen Fehler produziert ist mir bewusst ;-) Ich habe nur keine Ahnung wie ich das angehen muss damit es funktioniert wie ich es mir vorstelle.