Idée
[résolue]Lire un fichier text et trouver une ligne
- COTTIN
- Auteur du sujet
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 84
- Remerciements reçus 0
il y a 13 ans 10 mois #12297
par COTTIN
Réponse de COTTIN sur le sujet Re:Lire un fichier text et trouver une ligne
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.
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.
- Matthew BETTON
- Hors Ligne
- Membre platinium
-
Réduire
Plus d'informations
- Messages : 968
- Remerciements reçus 0
il y a 13 ans 10 mois #12299
par Matthew BETTON
Réponse de Matthew BETTON sur le sujet Re:Lire un fichier text et trouver une ligne
Bonsoir,
[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
Pour contrôler ce que contient $test :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\"
[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.
- Richard Lazaro
- Hors Ligne
- Membre platinium
-
Réduire
Plus d'informations
- Messages : 530
- Remerciements reçus 0
il y a 13 ans 10 mois #12310
par Richard Lazaro
Think-MS : (Get-Life).Days | %{ Learn-More }
\\"Problems cannot be solved by the same level of thinking that created them.\\" - Albert Einstein
Réponse de Richard Lazaro sur le sujet Re:Lire un fichier text et trouver une ligne
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.
- Matthew BETTON
- Hors Ligne
- Membre platinium
-
Réduire
Plus d'informations
- Messages : 968
- Remerciements reçus 0
il y a 13 ans 10 mois #12314
par Matthew BETTON
Réponse de Matthew BETTON sur le sujet Re:Lire un fichier text et trouver une ligne
Bonjour,
Richard Lazaro écrit:
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
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.
- COTTIN
- Auteur du sujet
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 84
- Remerciements reçus 0
il y a 13 ans 10 mois #12316
par COTTIN
Réponse de COTTIN sur le sujet Re:Lire un fichier text et trouver une ligne
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
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.
- COTTIN
- Auteur du sujet
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 84
- Remerciements reçus 0
il y a 13 ans 10 mois #12325
par COTTIN
Réponse de COTTIN sur le sujet Re:Lire un fichier text et trouver une ligne
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.
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
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- [résolue]Lire un fichier text et trouver une ligne