2015-12-01 3 views
1

Вот мой код:не содержит расколоть метод

$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».

Может кто-нибудь объяснить мне, почему это не работает?

ответ

5

Использование 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 
+0

Работает отлично, спасибо! – Kikopu

+0

Отлично! Не забудьте [принять ответ] (http://stackoverflow.com/help/someone-answers), когда сможете, если он решил вашу проблему – arco444

+0

, лучше использовать 'get-member' для отображения свойств (и методов, событий и т. Д.).) –

1

В Помимо того, что указано в arco444, вы также можете преобразовать строку с помощью существующего кода с помощью двойных кавычек.

$relanceAuto = "$relanceAuto".Split("=")[1]