【问题标题】:capture data from ini file PowerShell从 ini 文件 PowerShell 中捕获数据
【发布时间】:2013-12-30 08:28:37
【问题描述】:

我想解析一个 ini 文件并从一个部分捕获数据。基本上我正在尝试捕获安装在 1000 多台服务器上的 AV 版本。 ini 文件包含“Program_Version”。此变量包含版本号。如果我使用 Program_Version= 进行搜索,我会直接在“=”符号后面找到包含版本号的短语。比如 8.0、10.6 等

有人可以指导我如何实现这一目标吗?

谢谢

【问题讨论】:

    标签: powershell powershell-2.0 ini


    【解决方案1】:

    这是我使用的功能:

    function Parse-IniFile
    {
      [CmdletBinding()]
      Param
      (
        [Parameter(mandatory=$true,ValueFromPipeline=$true)]
        [Alias("Fichier")]
        [string]$fic
      )
    
      begin {} 
    
      Process 
      {
        $ini = @{}
        switch -regex -file $fic 
        {
          "^\[(.+)\]$"
          {
            $section = $matches[1]
            $ini[$section] = @{}
          }
          "(.+)=(.+)" 
          {
            $name,$value = $matches[1..2]
            $ini[$section][$name] = $value
          }
        }
    
        return $ini
      }
    
      end {}
    }
    

    给定一个来自“C:\Windows\System32\DriverStore\FileRepository”目录树的 INI 文件。

    $p = Parse-IniFile "C:\Windows\System32\DriverStore\FileRepository\adihdaud.inf_amd64_neutral_66552f06054bc4ee\Mixer.ini"
    $p["FRENCH"]["KSPINNAME_ADI_ALT_PCBEEP_SOURCE"]
    

    给予

    "Bip PC"
    

    【讨论】:

      【解决方案2】:

      .ini 文件通常是 key = value 对,可以使用 ConvertFrom-StringData 轻松转换为哈希表

      Read a properties file in powershell

      从那里只需从哈希表中读取哈希 Program_Version 键的值。

      【讨论】:

        猜你喜欢
        • 2014-03-16
        • 1970-01-01
        • 2010-09-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-04
        • 2019-01-26
        • 2023-03-25
        相关资源
        最近更新 更多