这是我的代码:
$fPath = Get-Content .\param.txt | Select-String 'adresse' -SimpleMatch
fPath = $fPath.split("=")[1]
$fPath
$paramListe = Get-Content .\param.txt | Select-String 'type' -SimpleMatch
$paramListe = $paramListe.split("=")[1]
$paramListe
$seuil = Get-Content .\param.txt | Select-String 'seuil' -SimpleMatch
$seuil = $seuil.split("=")[1]
$seuil = $seuil
$relanceAuto = Get-Content .\param.txt | Select-String 'relanceAuto' -SimpleMatch
$relanceAuto = $relanceAuto.split("=")[1]
$relanceAuto
这是导入的.txt:
adresse=o:\******\******\DataIntegrator
type=logiciel
seuil=0
relanceAuto=yes
我希望这些变量获得“=”符号旁边的值。但每次我启动程序时,它都会告诉我那些不是字符串:
[Microsoft.Powershell.Commands.MatchInfo]没有名为“split”的方法。
有人可以向我解释为什么它不起作用吗?
答案 0 :(得分:6)
使用Select-String
意味着对象存储在您要分配的变量中,而不是字符串中,因此您需要先获取字符串值才能使用.split()
方法。
如果你这样做:
PS > $relanceAuto.gettype()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True False MatchInfo System.Object
您可以看到$relanceAuto
实际上是MatchInfo
个对象。您可以通过以下方式查看与之关联的属性:
PS > $relanceAuto | Format-List *
IgnoreCase : True
LineNumber : 4
Line : relanceAuto=yes
Filename : InputStream
Path : InputStream
Pattern : relanceAuto
Context :
Matches : {}
这表明您实际需要的数据包含在Line
属性中,因此您可以像这样进行拆分:
PS > $relanceAuto.Line.split('=')[1]
yes
答案 1 :(得分:2)
除了arco444所述之外,您还可以使用双引号对现有代码进行字符串转换。
$relanceAuto = "$relanceAuto".Split("=")[1]