2017-09-06 9 views
0

.NETのmachine.configファイルの変更をスクリプト化しようとしていますが、問題は継続しています。私はWeb上のすべての例を使用していますが、どちらを使用しても違うエラーが発生します。下のスニペットは、私が一番近いものです。しかし、 "パス"内の設定ファイルに追加するのではなく、その中にすべてのコードを含む新しい文書を作成するだけですか?PowerShellを変更する.Net設定ファイル

$path = "c:\Temp\Machine.config" 
[xml]$machineConfig = Get-Content $path 

$Channelsxml = $machineConfig.CreateElement("Channels") 
$Channelsxml.SetAttribute ref= "http server" port="443" 
$node.AppendChild($Channelsxml) | Out-Null 

$machineConfig.Save("c:\Temp\Machine.config") 

これは、すべてのそれのコードの代わりに、指定されたパスに位置する設定ファイルを変更することとマイドキュメントにドキュメントを作成します。私はまた、次のエラーを取得:私はそれを行うために必要なもの

 
+ $Channelsxml.setAttribute ref= "http server" port="443" 
+       ~~~~ 
Unexpected token 'ref=' in expression or statement. 
    + CategoryInfo   : ParserError: (:) [], ParentContainsErrorRecordException 
    + FullyQualifiedErrorId : UnexpectedToken 

は、以下を追加します:

<channels> 
<channel ref="http server" port="443"/> 
</channels> 
+0

私はそれを行うために必要なもの設定ファイルに以下を追加している:あなたは$ノードがどこにも取り込まれていない <チャネルREF =「httpサーバ」ポート=「443」/> NoPowershellHere

+1

。また、.setAttributeはそのパラメータ(Name、Value)をかっこで囲む必要があります。 –

答えて

0

SetAttribute()方法のあなたの使い方が間違っています。作成したノードの子ノードに属性を追加したいので(その子も作成する必要があります)、その子ノードに2つの個別の属性を追加する必要があります。

# create node <channel ref="http server" port="443"/> 
$n1 = $machineConfig.CreateElement('channel') 
$n1.SetAttribute('ref', 'http server') 
$n1.SetAttribute('port', '443') 

# create node <channels> and append node <channel .../> 
$n2 = $machineConfig.CreateElement("channels") 
$n2.AppendChild($n1) | Out-Null 

その後、$machineConfig内のノードに$n2を追加する必要があります。

$parent = $machineConfig.SelectSingleNode('...') 
$parent.AppendChild($n2) 

はあなたに追加するノードを選択するために、適切なXPath expression...を交換してください。

関連する問題