我的主块中有一个相当简单的哈希表脚本。我的变量hashtable
和interface
都是全局的。我将一个简单的值传递给一个函数,并将值赋给全局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
进行排序,并将其放入另一个变量中,但我也无法使其工作。
我突然想念的任何东西?