3

私は以下のようにPowerShellで定義されたハッシュテーブルを持っています:

$jobs = @{
    "Test1"=[Array](
        [Array]("\\server1\file1.txt", "\\server2\file1.txt")

    );
    "Test2"=[Array](
        [Array]("\\sever1\file2.txt", "\\server2\file2.txt"),
        [Array]("\\server1\file3.txt", "\\server2\file3.txt")
    );
}

このコレクションを列挙して、各ペアで関数を呼び出そうとしています。Test1には1つのファイル比較があり、Test2には2つのファイル比較があります。

$jobs.GetEnumerator() | Sort-Object Key | foreach {
    LogWrite($_.Key + ": comparing files")

    $_.value | foreach {
        LogWrite("Comparing files '" + $_[0] + "' and '" + $_[1] + "'")
        #$r = CompareFiles($_[0], $_[1])
        #LogWrite("Result : " + $r)
    }

    LogWrite($_.Key + ": comparison successful")
    LogWrite("")
}

私が得ている出力は次のとおりです。

Test1: comparing files
Comparing files '\' and '\'
Comparing files '\' and '\'
Test1: comparison successful

Test2: comparing files
Comparing files '\\server1\file2.txt' and '\\server2\file2.txt'
Comparing files '\\server1\file3.txt' and '\\server2\file3.txt'
Test2: comparison successful

Powershell(何か)が同じサイズのアレイを作成しているようです。誰かがより良いデータ構造またはソリューションを提案できますか?

4

1 に答える 1

3

Powershellで不可知論的なジャグ配列のフラット化を回避することを参照すると、単一要素の配列にコンマを追加すると、フラット化が停止するように表示されます。

$jobs = @{
    "Test1"=[Array](,
        [Array]("\\server1\file1.txt", "\\server2\file1.txt")

    );
    "Test2"=[Array](
        [Array]("\\sever1\file2.txt", "\\server2\file2.txt"),
        [Array]("\\server1\file3.txt", "\\server2\file3.txt")
    );
}

Powershellでの配列の処理方法には奇妙なことがあるはずです。

于 2013-01-02T10:03:57.743 に答える