2016-09-18 37 views
0

我有2個TXT文件:如何在文本文件中VLOOKUP使用PowerShell

的ConfigurationFile:

ABC_LKC_FW_PATH: \\PathToABCFolder 
QWE_LKC_MW_PATH: \\PathToQWEFolder 
DEF_BKC_FW_PATH: \\PathToDEFFolder 
ERT_BKC_MW_PATH: \\PathToERTcFolder

和其他與參數

ChoosenConfig:

ABC_LKC_FW_PATH 
ERT_BKC_MW_PATH

我的腳本讀取並解析配置文件以獲取名稱和值。 我需要從ChoosenConfig文件讀取並使用ConfigurationFile中的字符串值。

不知道該怎麼辦呢?

腳本至今:

$IniFile_NME = "$SmokeTestFolder\SanityTests\Config\ConfigToParse.ini" 
dir $IniFile_NME 

$InputFile = [System.IO.File]::OpenText("$IniFile_NME") 

while ($InputRecord = $InputFile.ReadLine()) { 
    # Display the current record 
    Write-Host "`$InputRecord=$InputRecord" 
    Write-Host "" 

    # Determine the position of the sign (:) 
    $Pos = $InputRecord.IndexOf(':') 
    Write-Host "`$Pos=$Pos" 

    # Determine the length of the record 
    $Len = $InputRecord.Length 
    Write-Host "`$Len=$Len" 

    # Parse the record 
    $Variable_NME = $InputRecord.Substring(0, $Pos) 
    $VariableValue_STR = $InputRecord.Substring($Pos + 1, $Len -$Pos -1).ToUpper() 

    Write-Host "`$Variable_NME=$Variable_NME" 
    Write-Host "`$VariableValue_STR=$VariableValue_STR" 

    # Create a new variable based on the parsed information 
    New-Variable -Force -Name $Variable_NME -Value $VariableValue_STR.Trim() 

    # new-variable -name $Variable_NME -value $VariableValue_STR 
    Get-Variable -Name $Variable_NME 
} 
$InputFile.Close() 

回答

0

當你需要使用其它的價值選擇的數據結構是一個hashtable查找某個值。分裂您在冒號後面的空格(:\s*)輸入,並填補了哈希表是這樣的:

$configs = @{} 
Get-Content $IniFile_NME | ForEach-Object { 
    $key, $value = $_ -split ':\s*' 
    $configs[$key] = $value 
} 

另一種選擇是使用ConvertFrom-StringData。爲此,您需要將INI文件的內容轉換爲單個字符串,其中鍵和值由=而不是:分隔。

$configs = (Get-Content $IniFile_NME -Raw) -replace ':\s*', '=' | 
      ConvertFrom-StringData 

使用Get-Content $IniFile_NME | Out-String而不是Get-Content $IniFile_NME -Raw如果你還在使用PowerShell v2或更早。

一旦你有一個哈希表中的數據,你可以看看你的configs像這樣:

Get-Content $chosenConfigsFile | ForEach-Object { $configs[$_] } 
相關問題