我一直在使用 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 

鉴于上述相同的原则,您可以将每个键和值存储在一个单独的变量中,仅存储名称或仅存储键,等等。


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!