0

そこで、xml ファイルを読み込んで解析し、クリーンアップ後にファイルに出力するための powershell スクリプトを作成しました。私の問題は、 foreach ループをループすると、すべてが同じ変数に格納されることです。

#Access the XML file
[xml]$XML= [xml](Get-Content $XmlPath)

foreach ($node in $XML.catalog.entry)
{
    #XML Variables
    $Username = $XML.catalog.entry.username 
    $Description = $XML.catalog.entry.description
    $Service = $XML.catalog.entry.service

    #Creating the syslog event that will be sent to SecureVue
    $writeOutput= "Username : [$Username] Description: [$Description] Service: [$Service]"

    #output
    $writeOutput
}

残念ながら、私はそれを取得し続ける出力:

Username : [User1 User2 User3 User4] Description: [Description1 Description2 Description3 Description4] Service: [Service1 Service2 Service3 Service4]
Username : [User1 User2 User3 User4] Description: [Description1 Description2 Description3 Description4] Service: [Service1 Service2 Service3 Service4]
Username : [User1 User2 User3 User4] Description: [Description1 Description2 Description3 Description4] Service: [Service1 Service2 Service3 Service4]
Username : [User1 User2 User3 User4] Description: [Description1 Description2 Description3 Description4] Service: [Service1 Service2 Service3 Service4]

それ以外の:

Username : [User1] Description: [Description1] Service: [Service1]
Username : [User2] Description: [Description2] Service: [Service2]
Username : [User3] Description: [Description3] Service: [Service3]
Username : [User4] Description: [Description4] Service: [Service4]

私はいくつかのバリエーションが必要であることを知っています:

foreach($node in $XML.ChildNodes)

しかし、私はそれを機能させることができないようです。配列内の各ノードの 1 つの配列位置を使用して各行を書き出す方法についてのアイデアはありますか?

ありがとうございました!

4

1 に答える 1

1

@Erisが言ったように、XMLファイルのサンプルはこれをテストしやすくしますが、一見すると、この部分から始めるのが良いかもしれません:

foreach ($node in $XML.catalog.entry)
{
    #XML Variables
    $Username = $XML.catalog.entry.username 
    $Description = $XML.catalog.entry.description
    $Service = $XML.catalog.entry.service

    ...
}

意図が個々のノードのプロパティを割り当てる可能性が高い場合、ノードのコレクションのこれらの変数プロパティを割り当てているようです。代わりに、次のようなことを試してみます。

foreach ($node in $XML.catalog.entry)
{
    #XML Variables
    $Username = $node.username 
    $Description = $node.description
    $Service = $node.service

    ...
}

つまり、ループ内の変数で$nodeはなく、 のプロパティが必要です。$XML.catalog.entry

于 2013-10-10T18:05:29.703 に答える