Powershell 解析错误
Powershell parse error
我正在尝试使用以下代码解析 ini 文件,
但我收到以下错误:
new-variable : A variable with name 'FromConfig' already exists.
+ 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"
这个错误很好地解释了问题所在:您正在尝试创建一个已经存在的变量。
因此,一种解决方案是查看您的 .ini 文件(您可能想将其添加到您的问题中)是否有重复的键并尝试删除它们或只是用 -Force
覆盖现有变量,就像这样
...
New-Variable -Force -Name $Variable_NME -Value $VariableValue_STR
...
问题出在这一行:
新变量-名称$Variable_NME-值$VariableValue_STR
您已经有一个名为 $variable_nme 的变量,在新变量命令中您应该使用没有 $
符号的 -name variable_nme
,当然还有一个新名称。
我正在尝试使用以下代码解析 ini 文件, 但我收到以下错误:
new-variable : A variable with name 'FromConfig' already exists. + 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"
这个错误很好地解释了问题所在:您正在尝试创建一个已经存在的变量。
因此,一种解决方案是查看您的 .ini 文件(您可能想将其添加到您的问题中)是否有重复的键并尝试删除它们或只是用 -Force
覆盖现有变量,就像这样
...
New-Variable -Force -Name $Variable_NME -Value $VariableValue_STR
...
问题出在这一行:
新变量-名称$Variable_NME-值$VariableValue_STR
您已经有一个名为 $variable_nme 的变量,在新变量命令中您应该使用没有 $
符号的 -name variable_nme
,当然还有一个新名称。