Nur ausführen, wenn der Registrierungswert nicht vorhanden ist

**BEARBEITEN**

Ich habe eine Lösung gefunden, indem ich herumgespielt habe:

class add_route
{
        exec { "route_to_internal_network":
                command => "C:\Windows\System32\ROUTE.EXE add 192.168.5.254 mask 255.255.255.255 10.5.5.5 -p",
                unless => "C:\Windows\System32\reg.exe query HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\PersistentRoutes /f 192.168.5.254,255.255.252.0,10.5.5.5,1",
        }
}

Ich werde diesen Beitrag offen lassen, falls jemand anderes auf ein ähnliches Problem stößt

**BEARBEITEN**

Ich versuche, ein Puppenmanifest zu schreiben, um einigen meiner Windows-Hostserver eine dauerhafte statische Route hinzuzufügen. Bisher denke ich darüber nach, eine Klasse zu erstellen, die Folgendes leistet:

class add_route
{
    exec { "route_to_internal_network":
        command => "C:\Windows\System32\ROUTE.EXE add 192.168.5.254 mask 255.255.255.255 10.5.5.5 -p",
    }
}

Dieses Manifest führt den Befehl jedoch jedes Mal aus, wenn sich der Puppet-Client beim Puppet-Master anmeldet.

Ich hatte gehofft, zu verwendenonlyif in meiner Klasse, aber es scheint ein wenig verwirrend, wenn versucht wird, nach einem fehlenden Registrierungswert zu suchen, der meine Route enthält. Ist dies der beste Weg, um dies zu tun? Irgendwelche anderen Ideen?

Ich stelle mir vor, ich muss etwas tun wie:

class add_route
{
    exec { "route_to_internal_network":
        command => "C:\Windows\System32\ROUTE.EXE add 192.168.5.254 mask 255.255.255.255 10.5.5.5 -p",
        onlyif => ???
    }
}

Ich habe gehofft, meineonlyif Aussage würde passen zu

C:\Windows\System32\reg.exe query HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\PersistentRoutes /f '192.168.5.254,255.255.255.255,10.5.5.5,1'

Wenn das Ergebnis des obigen Befehls ist:

Suchende: 0 Treffer gefunden.

Allerdings denke ich dasonlyif Wenn nur nach einem Rückkehrcode gesucht wird, wird der Befehl erfolgreich ausgeführt, unabhängig davon, ob dieser Wert gefunden wurde oder nicht.

Weiß jemand, wie ich das Fehlen eines Registrierungswerts in einem Puppenmanifest überprüfen kann?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage