Фильтрация / разбиение вывода в PowerShell - PullRequest
0 голосов
/ 04 марта 2019

Я пытаюсь отфильтровать / разделить выходные данные, которые я получаю из этого кода:

Get-ADUser -Filter * -Properties proxyaddresses |
    Where-Object {$_.proxyaddresses -Like "ixi*"} |
    Select sAMAccountName, proxyaddresses

В разделе "proxyaddresses" есть число, которое начинается с "ixi: +49", и некоторая дополнительная информация, которую я делаюне нужно.Как я могу манипулировать этим кодом, чтобы получить только это число, а затем каким-то образом найти способ отфильтровать его, чтобы получить только последние четыре цифры в качестве выходных данных?

1 Ответ

0 голосов
/ 04 марта 2019

ProxyAddresses - это массив, поэтому -Like не будет работать с этим.Это может помочь, если я правильно понимаю вопрос (не проверено)

$re = [regex]'ixi:\+49.*(\d{4})$'
Get-ADUser -Filter * -Properties ProxyAddresses |
    Where-Object {$_.ProxyAddresses -match $re.toString()} |
    Select-Object SamAccountName, ProxyAddresses,
                  @{Name = 'ixi'; Expression = {$re.Match($_.ProxyAddresses).Groups[1].Value}}

Детали регулярного выражения:

ixi:         Match the characters “ixi:” literally
\+           Match the character “+” literally
49           Match the characters “49” literally
.            Match any single character that is not a line break character
   *         Between zero and unlimited times, as many times as possible, giving back as needed (greedy)
(            Match the regular expression below and capture its match into backreference number 1
   \d        Match a single digit 0..9
      {4}    Exactly 4 times
)
$            Assert position at the end of the string (or before the line break at the end of the string, if any)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...