2017-07-11 4 views
1

Zerreißen meine Haare auf diese ... Ich versuche, einen Registrierungsschlüssel Wert über DSC setzen, aber alles, was ich versuche, scheitert kläglich. Verwenden der systemeigenen Ressource PSDesiredStateConfiguration und REGISTRY.Registry DSC mit BINARY/HEX-Wert

Das Problem ist, dass der Wert, den ich einstellen möchte, in REG_BINARY sein muss und der Wert ist auch in HEX. Er probierte zahlreiche Möglichkeiten, Hex = $true hinzuzufügen und alle "0x" am Anfang jeder Hex-Zeichenfolge hinzuzufügen - keiner von ihnen scheint für mich zu arbeiten. Auch versucht, unter dem und immer noch nicht (Hex wird unten verwiesen wird, sondern versuchte es auf und ab und nicht für mich arbeiten) ... jede mögliche Hilfe auf diesem bitte

Registry SNMPServiceFail { 
    Ensure  = "Present" 
    Key   = "HKLM:\SYSTEM\CurrentControlSet\Services\SNMPTRAP" 
    Force  = $true 
    ValueName = "FailureActions" 
    ValueData = @([byte[]](0x80,0x51,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x14,0x00,0x00,0x00,01,0x00,0x00,0x00,0xe0,0x93,0x04,0x00)) 
    ValueType = "Binary" 
    #Hex = $true 
} 

ERROR:

VERBOSE: [LONINENGD187]: LCM: [ Start Resource ] [[Registry]SNMPServiceFail] 
VERBOSE: [LONINENGD187]: LCM: [ Start Test  ] [[Registry]SNMPServiceFail] 
VERBOSE: [LONINENGD187]:       [[Registry]SNMPServiceFail] (ERROR) Parameter 'ValueData' has an 
invalid value '(128, 81, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 20, 0, 0, 0, 1, 0, 0, 0, 224, 147, 4, 0)' for type 
'Binary' 
VERBOSE: [LONINENGD187]: LCM: [ End Test  ] [[Registry]SNMPServiceFail] in 1.5310 seconds. 
PowerShell DSC resource MSFT_RegistryResource failed to execute Test-TargetResource functionality with error message: 
(ERROR) Parameter 'ValueData' has an invalid value '(128, 81, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 20, 0, 0, 0, 
1, 0, 0, 0, 224, 147, 4, 0)' for type 'Binary' 
    + CategoryInfo   : InvalidOperation: (:) [], CimException 
    + FullyQualifiedErrorId : ProviderOperationExecutionFailure 
    + PSComputerName  : localhost 

VERBOSE: [LONINENGD187]: LCM: [ End Set  ] 
The SendConfigurationApply function did not succeed. 
    + CategoryInfo   : NotSpecified: (root/Microsoft/...gurationManager:String) [], CimException 
    + FullyQualifiedErrorId : MI RESULT 1 
    + PSComputerName  : localhost 

Wenn ich einen Registry-Export tun es, wie unten zeigt - das ist, was ich es, um sicherzustellen, ich versuche, auf alle meine Server ist eingestellt auf:

"FailureActions"=hex:80,51,01,00,00,00,00,00,00,00,00,00,01,00,00,00,14,00,00,00,01,00,00,00,e0,93,04,00 
+0

haben Sie eine Antwort erhalten, die für Sie gearbeitet? Sehen Sie meinen Kommentar zu Matthias 'Antwort und, falls nötig, die Antwort, die ich zu einer ähnlichen Frage auf Serverfault gestellt habe. –

Antwort

2

Die 012.erwartet den ValueData-Eingang als String-Array und konvertiert ihn dann intern in ein Byte-Array (siehe Funktion ConvertTo-Binary in der verknüpften Quelldatei).

Cast [string[]] statt [byte[]]:

Registry SNMPServiceFail { 
    Ensure  = "Present" 
    Key   = "HKLM:\SYSTEM\CurrentControlSet\Services\SNMPTRAP" 
    Force  = $true 
    ValueName = "FailureActions" 
    ValueData = @([string[]](0x80,0x51,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x14,0x00,0x00,0x00,01,0x00,0x00,0x00,0xe0,0x93,0x04,0x00)) 
    ValueType = "Binary" 
} 
+0

vielen Dank dafür - leider tut das immer noch nicht - immer noch den gleichen Fehler - irgendwelche anderen Ideen? Ich kann in der Quelle sehen, dass es "0x" erwartet - es ist definitiv die Umwandlung, die es nicht mag Ich habe ein Gefühl, aber kann nicht meinen Finger darauf legen. – lara400

+0

@ lara400 Nicht wirklich: - \ btw. Jeder Byte-Eintrag muss nicht mit "0x" beginnen, aber _wenn sie dies tun, wird "ConvertTo-Binary" sie als hexadezimal analysieren. –

+0

@ MathiasR.Jessen, ich habe nicht versucht, deins, aber meine über auf ServerFault ist da mit Beispielcode. Der Trick ist das Parsen der Teilzeichenfolge. Es erwartet zusammenhängende 2 Zeichen Bytes in einer Zeichenfolge. '$ binaryRegistryKeyValue + = [Byte] :: Parse ($ singleRegistryKeyValue.Substring ($ singleRegistryKeyValueIndex, 2), 'HexNumber')' Lass es mich wissen, wenn ich etwas vermisse. –