Powershell最初拒绝对哈希表进行排序或保持排序

时间:2016-10-31 19:52:14

标签: function loops powershell hashtable

我的主块中有一个相当简单的哈希表脚本。我的变量hashtableinterface都是全局的。我将一个简单的值传递给一个函数,并将值赋给全局interface以用于创建我的哈希表。

以下是功能:

Function Get-TestedInterface ($num)
{
    #Determines SAS or SATA by FWCheck.swt prefix convention of 2016.
    switch -Wildcard ($num)
    {
        1* {$interface = "SAS/SATA"}
        2* {$interface = "SAS"}
        3* {$interface = "SAS"}
        4* {$interface = "SATA"}
        5* {$interface = "SAS/SATA"}
        6* {$interface = "SAS"}
        7* {$interface = "SATA"}
        8* {$interface = "SAS/SATA"}
    }
}

#This function test the FwCheck.swt file for any changes
Function Test-Swtpath
{
    #copy file to text format
    cp C:\path\to\FwCheck.swt C:\path\to\fwcheck_working.txt
    sleep -s 1
    #Build a number array
    $sections = @((Select-String -Path C:\path\to\fwcheck_working.txt -Pattern ":(\d{4})").Line)

    #Cycle through sections and check for missing batch files.
    foreach($section in $sections)
    {
        $num = $section -replace ":"
        $t = Test-Path "C:\path\to\FwCheck${num}.bat"
        if($num -ne "5/[1-9]\d{3}/")
        {
            Get-TestedInterface ($num)
        }

        build hash table to allow correct batch file execution
        $hashtable.Add("$num" , "$interface") | Out-Null

        #Build missing batch file.
        if($t -eq $false -and $num -ne "5\d{3}")
        {
            $l = @"
cd\
cd\path\to
program -l${num}-${num} `$c:\path\to\FwCheck.swt
"@
            New-Item "C:\path\to\FwCheck${num}.bat" -ItemType file -Value $l

        }
    }
}

如果我不使用Out-Null,我会得到完全有序的输出,以便在我构建它时向我显示我的哈希表。这意味着哈希表正在以正确的顺序构建。

但是,在函数结束时,如果我调用hashtable变量,它会显示我的所有条目完全混乱到无组织的混乱,同时仍然被引用到正确的interface

我尝试使用$states.GetEnumerator() | Sort-Object Name进行排序,并将其放入另一个变量中,但我也无法使其工作。

我突然想念的任何东西?

0 个答案:

没有答案