这是我的代码:
$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"的方法.
有人可以向我解释为什么它不起作用吗?
使用这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