Imaginez que vous avez une variable qui contient "Domain\MonLogin"
Vous voulez extraire ce qui est à gauche ou à droite du caractère \
Le plus simple pour cela est d'utiliser la fonction Split.
Split retourne un tableau et séparant les éléments en fonction du caractère donné, ici \
Le 1er élément du tableau numéroté 0 contiendra Domain
et le second, numéroté 1, contiendra MonLogin
clear-host
$NomVariable = "Domain\MonLogin"
$partieAvant = $NomVariable.Split('\')[0]
$partieApres = $NomVariable.Split('\')[1]
Write-Output $partieAvant
Write-Output $partieApres
Lien vers le fichier : cliquez ici
Si le séparateur n'est pas un élément simple de 1 caractère comme \, il faut adapter avec un regex. Démonstration où ici le séparateur est le mot 'Separateur'
clear-host
$MaVariable = "Element1SeparateurElement2SeparateurElement3"
$separateur = "Separateur"
# Diviser la chaîne en un tableau d'éléments
$elements = $MaVariable -split [regex]::Escape($separateur)
#Afficher l element 1
$element1 = $elements[0]
# Afficher le résultat
Write-Output "Element 1 : $element1"
#Afficher l element 2
$element2 = $elements[1]
Write-Output "Element 2 : $element2"
#Afficher l element 3
$element3 = $elements[2]
Write-Output "Element 3 : $element3"
Lien vers le fichier : cliquez ici
Autre cas plus compliqué (trop ?) où vous voulez faire une recherche dans un tableau qui a ici 4 lignes.
Le but est d'isoler des données dans ces lignes.
On recherche ce qu'il y a après data-host=@
et le mot doit s'arrêter avant le prochain @
Pour cela le script utilise la fonction indexof pour recherche le mot clé.
Si on le trouve, on recherche la position du prochain @
et on isole ce qu'il y a entre les 2
Clear-Host
$MotCle = "data-host=@"
$MonTableau = @()
$MonTableau += "Ligne 1 Du texte"
$MonTableau += "Ligne 2 data-host=@Robert@ et la campagne"
$MonTableau += "Ligne 3"
$MonTableau += "Ligne 4 data-host=@Loda@ et la bougie"
foreach ($UneLigne in $MonTableau){
Write-Host $UneLigne
}
Write-host ""
foreach ($UneLigne in $MonTableau){
$Position1 = $UneLigne.indexof($MotCle)
if ($Position1 -gt 0) { #Si le mot clé à été trouvé
Write-host "Position 1 (avant la prise en compte de la longueur du mot clé) : $($Position1)"
#On récupère la position du caractère situé juste après le mot clé
Write-host "Longueur mot clé : $($MotCle.Length)"
$Position1 = $($Position1+$MotCle.Length)
Write-host "Position 1 : $($Position1)"
$Position2 = $UneLigne.indexof("@",$($Position1))
Write-host "Position 2 : $($Position2)"
Write-host "Position 3 : $($Position2-$Position1)"
$MyLine = $UneLigne.substring($Position1,$($Position2-$Position1))
Write-host "Mot isolé : $MyLine"
}
}
Lien vers le fichier : cliquez ici
Résultat de ce code
Article(s) précédent(s)