Question
Fractionnement chaine caractère
- Arnaud Petitjean
- Hors Ligne
- Modérateur
Oui l'opérateur Split, ainsi que Replace n'acceptent que des RegEx. Mais si tu leur donne une chaine simple, c'est aussi considéré comme une RegEx.
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Connexion ou Créer un compte pour participer à la conversation.
- witness
- Auteur du sujet
- Hors Ligne
- Membre premium
- Messages : 120
- Remerciements reçus 1
Connexion ou Créer un compte pour participer à la conversation.
- witness
- Auteur du sujet
- Hors Ligne
- Membre premium
- Messages : 120
- Remerciements reçus 1
Si l'ordinateur s'appelle "s202-01" et qu'une ligne dans mon fichier contient "\\server\imp-s202", on retrouve la première partie du nom de l'ordinateur dans le nom de l'imprimante, du coup c'est cette imprimante là à mapper.
Ou bien on peut faire autrement, si le nom de l'ordinateur apparait dans la liste, l'imprimante qui est indiquée en fin de ligne doit être mappée.
Par exemple si l'ordinateur se nomme "s202-01" et que dans le fichier txt, il y a cette ligne "s202-01:\\server\imp-s202", alors c'est cette imprimante qui doit être mappée.
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
- Hors Ligne
- Modérateur
Je vais essayer de te mettre sur la voie...
Donc, si je résume, les étapes sont :
- Récupération du nom de l'ordinateur
- Récupération de la ligne dans le fichier texte qui contient le nom de l'ordinateur récupéré à l'étape 1
- Extraction du nom de l'imprimante à partir de la ligne de texte récupérée à l'étape précédente
- Montage de l'imprimante
# 1. Récupération du nom de l'ordinateur
$myPC = $env:Computername
# 2. Récupération de la ligne dans le fichier texte qui contient le nom de l'ordinateur
# 2.1 Chargement du fichier texte en mémoire (en supposant que ton fichier soit nommé printers.txt et présent dans c:\temp)
$printers = Get-Content -Filepath C:\temp\printers.txt
# 2.2. On recherche une ligne de texte qui contient le nom de l'ordinateur
$printer = $printers | Where-Object { $_ -like "*myPC*"}
$printer -match '.+\:\\\\(?<servername>.+)\\(?<printername>.+)'
$printerName = $matches.printername
# 3. On connecte l'imprimante. Et là je te laisse réfléchir un peu... ;-)
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Connexion ou Créer un compte pour participer à la conversation.
- ericlm128
- Hors Ligne
- Membre elite
- Messages : 187
- Remerciements reçus 37
En faisant divers tests en modifiant le [-1] j'obtiens:
[0] = s202-01:
[1] = rien
[2] = server
[3] = imp-s202
On peut mettre [3] plutôt que [-1] du coup ?
Pourquoi quand je mets [1] ça ne me renvoie rien ? J'aurais pensé qu'à la position [1] du tableau il y aurait la deuxième partie du fractionnement, vu que l'index commence à la position [0] ?
Tout parait normal, il faut bien comprendre qu'il divise la chaine de caractère en tableau sur chaque caractère \
Je vais schématiser si j'y arrive :
s202-01:\\server\imp-s202 -> Index0{s202-01:}\Index1{}\Index2{server}\Index3{imp-s202}
Le vide de l'index 1 est donc le vide entre les deux \ consécutives
PS : Ma mise en forme du texte lors de l'édition est horrible
Connexion ou Créer un compte pour participer à la conversation.
- witness
- Auteur du sujet
- Hors Ligne
- Membre premium
- Messages : 120
- Remerciements reçus 1
En faisant divers tests en modifiant le [-1] j'obtiens:
[0] = s202-01:
[1] = rien
[2] = server
[3] = imp-s202
On peut mettre [3] plutôt que [-1] du coup ?
Pourquoi quand je mets [1] ça ne me renvoie rien ? J'aurais pensé qu'à la position [1] du tableau il y aurait la deuxième partie du fractionnement, vu que l'index commence à la position [0] ?
Tout parait normal, il faut bien comprendre qu'il divise la chaine de caractère en tableau sur chaque caractère \
Je vais schématiser si j'y arrive :
s202-01:\\server\imp-s202 -> Index0{s202-01:}\Index1{}\Index2{server}\Index3{imp-s202}
Le vide de l'index 1 est donc le vide entre les deux \ consécutives
PS : Ma mise en forme du texte lors de l'édition est horrible
Salut ericlm128,
Effectivement, ça parait normal.
Merci.
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- Fractionnement chaine caractère