1

私は現在、XMLファイルを解析するPowerShellスクリプトを作成しており、解析された値の一部を後で使用するための変数として保存します。

たとえば、私のXMLは次のようになります。

<head>
  <foo>
   <bar id="1" status="dead">
      <baz>
        <qux>Hello World 001</qux>
      </baz>
    </bar>
   <bar>
      <baz>
        <qux>Hello World 002</qux>
       </baz>
   </bar>
  </foo>

  <foo>
   <bar id="2" status="dead">
      <baz>
        <qux>Goodbye World 001</qux>
      </baz>
    </bar>
   <bar>
      <baz>
        <qux>Goodbye World 002</qux>
       </baz>
   </bar>
  </foo>
</head>

現在、私のスクリプトは次のようになっています。

[xml]$report = Get-Content ./helloworld.xml
$foo_sub_length = $report.head.foo.length - 1
$bar_sub_length = $report.head.foo[$foo_sub_length].bar.length - 1
$foo_looper = 0
$bar_looper = 0

今のところ、この部分は機能しますが、個々のfooからid番号またはqux文字列を取得したいので、次のようなことをしたいと思います(擬似コード)。

do {
    do {
      $foo($foo_looper)_id = $report.head.foo[$foo_looper].bar[$bar_looper].baz.id
        $foo($foo_looper)_bar($bar_looper)_qux = $report.head.foo[$foo_looper].bar[$bar_looper].baz.qux
      $bar_looper = $bar_looper + 1
    while $bar_looper <= $bar_sub_length
     }
  $foo_looper = $foo_looper + 1
while $foo_looper <= $foo_sub_length
}

これは意味がないかもしれないし、はっきりしていないかもしれないと思いますが、助けが必要です。基本的に、変数の値を変更せずに、変数の名前をたとえば$ foo1、$ foo2、$ foo3などにインクリメントする方法はありますか?基本的に、

> $bar = 1
> $foo($bar) = hello
> $bar + 1
> $foo($bar) = world
> $foo(1)
hello
> $foo(2)
world
4

2 に答える 2

3

New-Variableコマンドレットを使用します。

例えば

$bar = 1
New-Variable "foo$bar" "Hello,"
$bar = $bar + 1
New-Variable "foo$bar" "World!"
"$foo1 $foo2"

あなたに与えるべき

Hello, World!
于 2012-09-15T01:27:15.000 に答える
1

変数の名前を変更しますか?変数は、変数:driveを介してプロバイダーとして公開されます。その結果、ファイルと同じように、変数にrename-itemを使用できます。

ps> rename-item variable:var1 var2
于 2012-09-15T01:24:20.673 に答える