where name like powershell ?
- Street: Zone Z
- City: forum
- State: Florida
- Country: Afghanistan
- Zip/Postal Code: Commune
- Listed: 31 December 2022 1 h 08 min
- Expires: This ad has expired
Description
where name like powershell ?
**Titre de l’article :**
Maitrisez la Puissance de PowerShell : Filtre avec WHERE-OBJECT et -LIKE pour une Recherche Dynamique
—
**Introduction**
En PowerShell, filtrer des données selon des critères spécifiques est un besoin courant. Supposons que vous ayez une liste de noms de logiciels à surveiller (sans version) et que vous souhaitiez récupérer les entrées correspondantes dans une liste retournée (comme les programmes installés qui incluent la version dans leur nom). Cet article détaille comment y parvenir en utilisant `Where-Object` et l’opérateur `-like`.
—
### I. Comprendre la Situation Pratique
Une utilisateur, confronté à des noms de programme comme `Notepad++ (7.0)` ou `SQLServer2019`, souhaite filtrer ces entrées en utilisant une **liste de noms génériques** (ex: `@(‘Notepad’, ‘SQL’)`). Le défi est de retrouver une correspondance partiel pour chaque élément de la liste.
—
### II. Priréquis et Concepts Fondamentaux
#### 1. *Where-Object* : L’Élément Clé
– **Rôle** : Permet de filtrer une collection d’objets en appliquant une condition booléenne.
– **Syntaxe** : `Where-Object {-Property -Operator Value}` ou `Where { $_.Proprety like ‘pattern’* }`.
– **Exemple** :
“`powershell
Get-Process | Where-Object {$_.Name -like ‘*svc*’} # Renvoie les processus contenant “svc” dans leur nom
“`
#### 2. L’Opérateur **-Like**
– **Fonctionnement** : Cherche des correspondances substrings avec les wilcards **`*`** (tous les caractères) et **`?`** (un caractère unique).
– **vs -Match** :
– `-Like` utilise des wilcards.
– `-Match` utilise des expressions régulières.
—
### III. Scénario de la Liste & les Solutions
Supposez que nous ayons une liste (`$list`) contenant les valeurs pur (sans versions):
“`powershell
$list = @{ ‘Adobe Reader’; ‘Firefox’ }
# mais le nom réel est ‘AdobeReader 23.0’ ou ‘Firefox Developer Edition’
“`
#### Approche 1 : Boucle imbriquée dans le filtre
“`powershell
$filtered = Get-WmiObject … | Where-Object {
$matchFound = $false
foreach ($name in $list) {
# Vérifie si un élément de la liste est contenu dans le nom:
if ($_.Name -like “*$name*”) {
$matchFind = $true
break
}
}
$matchFind # Si vrai, l’objet est inclu
}
“`
#### Aoproche 2 : Utilisition d’une Expression Réguliére Dynamique
Convertir la liste en un regex `^(?=.*$list1).*` ou une expression `|` séparant les patterns:
“`powershell
$pattern = ‘(‘ + ($list | ForEach-Object { [regex]::Escape($_) } ) -join “|”
$filtré = $ProgramsList | Where-Object { $_.Name -cmatch $pattern }
“`
—
### IV. Exemples Pratiques
**Exemple 1 : Recherche partielle avec -Like et une liste**
“`powershell
$list = ‘PowerShell’, ‘Microsoft’
Récupérons les processus contenant ces mots:
PS C:> Get-Process | Where-Object {
foreach ($term in $list) {
if ($_.Name -like “*$term*”) {
return $true
}
}
return $false
}
“`
**Exemple 2 : Utilisation de -Like avec une liste à l’aide de Where-Object**
Si vous avez besoin de retenir les procesus dont le ID commence par “Web”:
“`powershell
$list = “Web”
Get-Service | Where-Object Name -like “*$list*”
“`
—
### V. Astuces et Pitfalls à Éviter
– **Comparer la sensibilité de la case** : L’utilisation de **`-clike` (exacte) ou `-like` (insensible à la.case par défaut).).
– **Wlcards Oubliés** : Sans wildcard, l’équivalent de `-eq` . Exemple : `$_.Version -like ‘2.1’` échoue sans `*` .
– **Performance** : Pour des listes longues, la méthode 2 (*-match regex) est plus efficiente.
—
### VI. Conclusion
Maîtriser `Where-Object` et `-like` est essentiel pour automatiser les filtres complexes en PowerShell. Que ce soit pour des recherches partielles, des listes dynamiques, ou des cas Edge (cas sensibilité), l’approche choisie équilibre puissance et clarté.
—
**Ressources recommandées pour approfondir** :
– Documentation officielle Microsoft sur **Where-Object** : [Link](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/where-object)
– Explication détaillé de `-Like` et wilcards: [IT-Connect.fr](https://www.it-connect.fr/powershell-les-operateurs-like-et-notlike/)
– Exemples pratiques de filtre avancé : [Stack Overflow](https://stackoverflow.com/questions/30873309/powershell-where-object-name-like-in-list)
—
**Résumé**
L’opérateur `-Like` associé à `Where-Object` offre une fexibilité idéale pour les tâches de recherche partile. Grce à des boucles imbricatess ou des expressions regex, vous pouvez cibler des data même avec des modifictions (ex: versions). Cet article propose plusieurs méthodes pour s’acquitter de ce type de défi technique.
197 total views, 1 today
Recent Comments