Idée [résolue]Lire un fichier text et trouver une ligne

Plus d'informations
il y a 13 ans 10 mois #12297 par COTTIN
même joueur joue encore :

Alors la question suivante sera je veut récupérer ma fameuse ligne.

BINGO j'arrive a la récupérer.

$test = Get-Content ipagence.txt | select-string -pattern $ipverif

le hic je ne veut garde QUE les caractères après le 9 ou 10éme je sait pas très bien.

donc je fait un $nomagc=$test.Substring(9)

il me met L'appel de l améthode a échoué parce que [Microsoft.powerShell.Commands.MatchInfo] ne contien pas de méthode nommée \"SubString\"

Voila mon soucie.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 13 ans 10 mois #12299 par Matthew BETTON
Bonsoir,

donc je fait un $nomagc=$test.Substring(9)

il me met L'appel de l améthode a échoué parce que [Microsoft.powerShell.Commands.MatchInfo] ne contien pas de méthode nommée \"SubString\"

Pour contrôler ce que contient $test :

[code:1]$test | Get-Member[/code:1]

Tu obtiens :
[code:1]
TypeName: Microsoft.PowerShell.Commands.MatchInfo

Name MemberType Definition
----

Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
RelativePath Method string RelativePath(string directory)
ToString Method string ToString(), string ToString(string directory)
Context Property Microsoft.PowerShell.Commands.MatchInfoContext Context {get;set;}
Filename Property System.String Filename {get;}
IgnoreCase Property System.Boolean IgnoreCase {get;set;}
Line Property System.String Line {get;set;}
LineNumber Property System.Int32 LineNumber {get;set;}
Matches Property System.Text.RegularExpressions.Match[] Matches {get;set;}
Path Property System.String Path {get;set;}
Pattern Property System.String Pattern {get;set;}[/code:1]

Tu observes donc la méthode ToString().

Du coup, tu sais que tu peux utiliser cette méthode sur ton objet de type \"Microsoft.PowerShell.Commands.MatchInfo\" de la façon suivante :

[code:1]($Test.ToString()).Substring(9)[/code:1]

Mais je ne dis pas que c'est la meilleure façon de travailler avec ton fichier.

Si tu ajoutes une ligne au début de ton fichier, pour obtenir, pour l'exemple, un fichier .csv du type :

Number;Scope;Value;Site
001;10.50.1.;726975;MONTREUIL
002;10.50.2.;727068;BONDY
003;10.50.3.;725247;AULNAY
004;10.50.4.;727261;COURNEUV
005;10.50.5.;727278;STDENIS
006;10.50.6.;727288;ARCUEIL
007;10.50.7.;727296;ASNIERES
008;10.50.8.;727305;COURBEVO

Tu peux alors importer ton fichier csv avec le Cmdlet 'Import-Csv', et ainsi utiliser les propriétés de ton objet récupéré plutôt que de faire du 'découpage' avec la méthode SubString() :

[code:1]$test = Import-Csv ipagence.csv -delimiter \";\" | Where-Object {$_.Scope -eq \"10.50.1.\"}
$test.Value
$test.Site
$test.Number
[/code:1]

@ +

Matthew

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 13 ans 10 mois #12310 par Richard Lazaro
Pourquoi ne pas jouer avec le Split ?

Think-MS : (Get-Life).Days | %{ Learn-More }

\\"Problems cannot be solved by the same level of thinking that created them.\\" - Albert Einstein

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 13 ans 10 mois #12314 par Matthew BETTON
Bonjour,

Richard Lazaro écrit:

Pourquoi ne pas jouer avec le Split ?


Ce que j'en dis reste mon avis : le passage de vbscript à powershell m'a beaucoup soulagé ...

Des Cmdlets qui te renvoient des collections d'objets, c'est quand même le pied.

Pour un fichier qui contient des séparateurs, je trouve cela plus pratique (mon avis personnel).

Et même si le fichier ne contient pas de header, on peut le spécifier :

[code:1]$test = Import-Csv ipagence.csv -delimiter \";\" -header Number,Scope,Value,Site[/code:1]

Cela reste une solution parmi d'autres.

Maintenant, si cela 't'amuses', pourquoi pas effectivement :)

@ +

Matthew

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 13 ans 10 mois #12316 par COTTIN
Merci pour vos réponse.

pour la suite j'aimerais changer l'ip et le nom du PC de la machine avec les deux variables

$ipverif
$npc2

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 13 ans 10 mois #12325 par COTTIN
Voila je veux changer l'adresse IP de ma machine.

j'esseye de faire

[code:1]$wmi = Get-WmiObject win32_networkadapterconfiguration -filter \"ipenabled = 'true'\"

$wmi.EnableStatic($ipverif, \"255.255.255.0\"«»)

$wmi.SetGateways($gateway, 1)

$wmi.SetDNSServerSearchOrder(\"10.100.0.65\"«»)[/code:1]

il me change bien

la passerelle par défaut
le DNS

mais il ne me change pas l'ip et la gateway

Une dernière question j'aimerais aussi changer le NOM du PC.

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.045 secondes
Propulsé par Kunena