不包含拆分方法

时间:2015-12-01 13:28:39

标签: powershell split

这是我的代码:

$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”的方法。

有人可以向我解释为什么它不起作用吗?

2 个答案:

答案 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]