从ini文件PowerShell中捕获数据

时间:2013-12-12 04:06:25

标签: powershell powershell-v2.0 ini

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

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

由于

2 个答案:

答案 0 :(得分: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"

答案 1 :(得分:0)

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

Read a properties file in powershell

从那里,只需从哈希表中读取哈希Program_Version密钥的值即可。