【问题标题】:Get-IniContent Help Getting Specific Sections with WildcardsGet-IniContent 帮助使用通配符获取特定部分
【发布时间】:2018-04-20 06:21:51
【问题描述】:

我有多个 INI 文件,我必须在我们的呼叫中心添加新行时定期更新这些文件。我可以使用 get-inicontent 脚本来获取我要比较的值,但是 ID 部分有时有空格,有时也没有,可能我遇到的最大问题是缩放。每个 INI 可以有多个部分标记相同的内容,但末尾有一个数字。我需要每个 ACD 部分的 ID。请参阅下面的文件示例以及我用来获取一个 ACD 的值的示例。下面的脚本返回每个值,但它需要对每个值进行单独查询,并注意那些有制表符的空格。我想找出一种方法来返回忽略额外空格的所有 ACD ID 结果。任何帮助将不胜感激。

INI File:
[ACD1]
ID=1001
[ACD2]
  ID=1002
[ACD3]
     ID=1003
[Extension1]
ID=50001
[Extension2]
   ID=50002

PS Script:
$FileContents = Get-IniContent "C:\Temp\ScriptTest\CTISetupTest.ini"
$FileContents.ACD1.ID
$FileContents.ACD2.'  ID'
$FileContents.ACD3.'     ID'

预期结果是:

1001
1002
1003

【问题讨论】:

  • 它对我来说很好,你确定它不涉及不间断空格并且回车/换行符设置正确吗? (为什么首先有空格???)。尝试通过将上述内容粘贴回其中来重建新的 ini 文件。
  • 是的,上面的查询工作正常,因为我已经考虑了在每个 ID 中找到的空格并放置了所有三个查询,但是我的文件中有数百个 ACD,所以我需要能够解析文件并找到所有 ACDxxx 并返回每个的 ID 值。希望能澄清事情。

标签: powershell ini


【解决方案1】:

只需遍历以 ACD 开头的键,然后遍历以 ID 结尾的子键。

$INI = Get-IniContent 'C:\Temp\ScriptTest\CTISetupTest.ini'
$ACDKeys = ($INI).keys | Where-Object {$_ -like 'acd*'}
foreach ($ACDKey in $ACDKeys) {
    $IDKeys = $INI[$ACDKey].Keys | Where-Object {$_ -like '*ID'}
    foreach ($IDKey in $IDKeys){
        $INI[$ACDKey][$IDKey]
    }
}

【讨论】:

  • 完美做到了。我不确定如何正确循环遍历结果。非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-03
  • 2021-12-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多