我想解析一个ini文件并从一个Section中捕获数据。基本上我试图捕获1000多个服务器上安装的AV版本。 ini文件包含“Program_Version”。此变量包含版本号。如果我使用Program_Version =进行搜索,我会直接在“=”符号后面找到它包含版本号的短语。像8.0,10.6等
有人可以指导我如何实现这个目标吗?
由于
答案 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密钥的值即可。