Как использовать командлет where-object для поиска текста, который содержит определенное слово - PullRequest
0 голосов
/ 31 марта 2020

Я настраиваю файл контактов в формате .csv, загруженный из Google, для чтения с powershell на моем windows 10 ноутбуке. У меня есть долгий путь к go, чтобы сделать это практичным, но первое, что я попробовал, и почти преуспел, это написать скрипт, который предлагает пользователю ввести имя, а затем отвечает номером телефона для них. , Этот скрипт выглядит следующим образом:

 Param(
     [Parameter(Mandatory=$true, Position=0, HelpMessage="What's their name?")]
     $TheirNameIs
  )
 Import-Csv "*MYPATH*.csv" |

     Sort 'Family name' -descending |

     Where-object {$_.Name -eq $TheirNameIs} |

     Select-Object -Property 'Name','Phone 1 - Type','Phone 1 - Value'

Проблема, с которой я сталкиваюсь, заключается в том, что Где-объект работает с -eq, чтобы найти точные совпадения с именем, которое вводит пользователь, но я хотел использовать -contains, чтобы я мог введите имя и получите все контакты с этим значением в своем имени. Я пытался заменить -eq на -contains, но ничего не получал, если не использовал точное имя контакта

Где я ошибаюсь с командлетом Where-object?

1 Ответ

0 голосов
/ 31 марта 2020

Вы можете заменить оператор -eq на оператор -like и вставить подстановочные знаки:

Param(
     [Parameter(Mandatory=$true, Position=0, HelpMessage="What's their name?")]
     $TheirNameIs
)
Import-Csv "*MYPATH*.csv" |
Sort 'Family name' -descending |
Where-object {$_.Name -like "*$TheirNameIs*"} |
Select-Object -Property 'Name','Phone 1 - Type','Phone 1 - Value'

Вы также можете go для регулярных выражений и использовать оператор -match, такой как @Olaf, уже упоминается. Решение может выглядеть так:

Param(
     [Parameter(Mandatory=$true, Position=0, HelpMessage="What's their name?")]
     $TheirNameIs
)
Import-Csv "*MYPATH*.csv" |
Sort 'Family name' -descending |
Where-object {$_.Name -match ".*$TheirNameIs.*"} |
Select-Object -Property 'Name','Phone 1 - Type','Phone 1 - Value'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...