我一直在使用 Get-IniContent Powershell script written by Oliver Lipkau它工作得很好,但是我正在处理的 ini 文件中有一个 STAFF 部分,其中有这样的数字键;
PS C:\Windows\System32\WindowsPowerShell\v1.0> $FileContent.STAFF
Name Value
---- -----
11 STFDUTY,CHAR,nvarchar,16,,NULL,,Duty roster
41 STFKEY3,CHAR,nvarchar,8,,NULL,,Analysis key
如果我像这样将 key 放在单引号中;
Write-Output $FileContent.STAFF.'11';
Write-Output $FileContent.STAFF.'41';
我很好地恢复了值,但是我希望将其自动化以构建 SQL 语句,而不是对键进行硬编码,如下所示,但我似乎无法让它正常工作;
$nFields = $FileContent.STAFF.FIELDS;
for($x = 0; $x -le $nFields; $x++)
{ Write-Output ("iteration: " + $x + " of " + $nFields);
$xString = ("'" + $x.ToString() + "'");
Write-Output ($FileContent.STAFF.$xString);
}
在读取哈希表时似乎不喜欢直接将数字作为第三段/参数(即使它在 Powershell 帮助程序中可用)并且我在这里用单引号连接没有返回任何内容。
在我构建脚本时,普通字符串键似乎工作得非常好,Write-Output 是临时的。
感谢任何提示,谢谢!
请您参考如下方法:
使用 Get-IniContent
给定 myinifile.ini
包含:
[STAFF]
11=STFDUTY,CHAR,nvarchar,16,,NULL,,Duty rosteR
41=STFKEY3,CHAR,nvarchar,8,,NULL,,Analysis key
我们可以使用 GetEnumerator() 来遍历哈希表
$FileContent.STAFF.GetEnumerator() | ForEach-Object{
$message = '{0}={1}' -f $_.key, $_.value
Write-Output $message
}
哪个会返回:
11:STFDUTY,CHAR,nvarchar,16,,NULL,,Duty rosteR
41:STFKEY3,CHAR,nvarchar,8,,NULL,,Analysis key
鉴于上述相同的原则,您可以将每个键和值存储在一个单独的变量中,仅存储名称或仅存储键,等等。