2013-12-12 74 views
1

我想解析一個ini文件並從一個部分捕獲數據。基本上我試圖捕獲安裝在1000多臺服務器上的AV版本。 ini文件包含「Program_Version」。該變量包含版本號。如果我使用Program_Version =進行搜索,則直接在「=」符號後面找到包含版本號的短語。像8.0,10.6等從ini文件捕獲數據PowerShell

有人可以請指導我如何實現這一目標嗎?

感謝

回答

0

.ini文件通常是key = value對,那是很容易轉換爲使用ConvertFrom-StringData是

Read a properties file in powershell

哈希表從那裏,它只是一個讀取值事從散列表中散列Program_Version密鑰。

0

這裏是我使用的功能:目錄樹:

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 {} 
} 
給出從 「\ Windows \ System32下\ DriverStore \ FileRepository文件C」 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"