2017-07-11 3 views
1

これで私の髪の毛が裂ける...私はDSC経由でレジストリキーの値を設定しようとしていますが、私が試したすべてが悲惨に失敗します。ネイティブPSDesiredStateConfigurationリソースとREGISTRYを使用しています。レジストリDSCがBINARY/HEX値で失敗する

問題は、設定したい値がREG_BINARYで、値がHEXであることです。 Hex = $trueで追加する方法をたくさん試し、各16進文字列の先頭にすべて "0x"を追加しました。いずれも私にとってはうまくいかないようです。でも、以下試しても失敗(Hexは、以下に参照されているが、私のために働いオンとオフではなく、それを試してみました)このください

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 

私は、レジストリのエクスポートを行うと、それは以下のように示している - それは、私はそれがすべての私のサーバー上に設定されていることを確認しようとしていますものです:

"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

は、あなたはあなたのために働いていた答えを得るのですか? Matthiasの答えについての私のコメントを参照し、必要ならば同様の質問に私がserverfaultで提供した答えを見てください。 –

答えて

2

Registry resourceは文字列配列としてValueData入力を想定しており、内部的にバイト配列に変換します(リンク元ファイルのConvertTo-Binary関数を参照)。 [string[]]ではなく[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

これはありがたいことに感謝しています - 残念ながらそれでもやっていない - 同じエラーが表示されます - それ以外のアイデアですか?私はそれが "0x"を予期しているソースで見ることができます - それは間違いなく私が感じているが、私の指をそれに置くことができないような変換です。 – lara400

+0

@ lara400本当は: - \ btw。各バイトエントリは '0x'で始める必要はありませんが、' ConvertTo-Binary'はそれらを16進数として解析します。 –

+0

@ MathiasR.Jessen、私はあなたのことを試していませんでしたが、ServerFaultのサンプルコードがあります。そのトリックは部分文字列解析です。それは文字列中の連続した2文字のバイトを期待しています。 '$ binaryRegistryKeyValue + = [Byte] :: Parse($ singleRegistryKeyValue.Substring($ singleRegistryKeyValueIndex、2)、 'HexNumber')'私に何かが足りなくなったら教えてください。 –

関連する問題