Powershell解析错误

时间:2016-09-11 09:37:54

标签: powershell parsing ini

我正在尝试使用下面的代码解析ini文件, 但我收到以下错误:

  

new-variable:一个名为' FromConfig'的变量。已经存在。   + new-variable -name $ Variable_NME -value $ VariableValue_STR   + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~       + CategoryInfo:ResourceExists:(TB1_LKC_PATH:String)[New-Variable],SessionStateException       + FullyQualifiedErrorId:VariableAlreadyExists,Microsoft.PowerShell.Commands.NewVariableCommand

$IniFile_NME="$PSScriptRoot\SanityTests\Config\ConfigToParse.ini"

dir $IniFile_NME

########################################
#
# Parse the file
#
########################################


$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(1, $Pos -1)
        $VariableValue_STR = $InputRecord.Substring($Pos + 1, $Len -$Pos -1)

        write-host "`$Variable_NME=$Variable_NME"
        write-host "`$VariableValue_STR=$VariableValue_STR"

        # Create a new variable based on the parsed information

        new-variable -name $Variable_NME -value $VariableValue_STR
        get-variable -name $Variable_NME
    }
$InputFile.Close()
谢谢你:)

添加配置文件:

PROJECT_TO_VALIDATE:J

FW_TESTED:LKC

FW_ALTERNATIVE:BKC

MW_TESTED:LKC

MW_ALTERNATIVE:BKC

TB1_TESTED:BKC

L_LKC_FW_PATH:" PathToFolder"

L_LKC_MW_PATH:" PathToFolder"

L_BKC_PATH:" PathToFolder"

J_LKC_FW_PATH:" PathToFolder"

J_LKC_MW_PATH:" PathToFolder"

J_BKC_PATH:" PathToFolder"

P_LKC_FW_PATH:" PathToFolder"

P_LKC_MW_PATH:" PathToFolder"

P_BKC_PATH:" PathToFolder"

TB1_LKC_PATH:" PathToFolder"

2 个答案:

答案 0 :(得分:2)

错误很好地解释了什么是错的:你正在尝试创建一个已经存在的变量 所以一个解决方案是查看你的.ini文件(你可能想要添加到你的问题中),如果有重复的密钥并试图摆脱它们或只是用-Force覆盖现有的变量

...
New-Variable -Force -Name $Variable_NME -Value $VariableValue_STR
...

答案 1 :(得分:0)

问题在于这一行:

new-variable -name $ Variable_NME -value $ VariableValue_STR

您已经拥有一个名为$ variable_nme的变量,并且在new-variable命令中,您应该使用-name variable_nme而没有$符号,当然还有新名称。