Удалить перед знаком «-» через запрос Active Directory - PullRequest
0 голосов
/ 27 апреля 2018

Введите:

john.dow-g
stephanie.adam-p
paul.douglas-steve-svr-z
jane.young-ac-a

выход:

-g 
-p
-svr-z
-ac-a

Мой запрос исправлен, но как создать переменную для удаления символа перед '-', как указано выше в выводе PowerShell для Active Directory?

Get-ADUser -Identity john.dow-g -Server 'domaincontroller.com' -Properties * |
    select {n="suffix";e={$_.SamAccountName.Substring(9)}}

Ответы [ 2 ]

0 голосов
/ 02 мая 2018

Я думаю, что вам не хватает информации по этому вопросу, у вас есть шаблон для сравнения, т.е. @ ('- ABC-A', - abc-a), или вы проверяете, например, последние 2 '-' и содержимое между ними.

Я расширю на втором:

Pipeline:

'paul.douglas-steve-svr-z' | % {$_.Substring($_.Substring(0,$_.LastIndexOf('-')).lastIndexOf('-'),$_.Length-($_.Substring(0,$_.LastIndexOf('-')).lastIndexOf('-')))}

Как вы можете видеть, такая кучка может быть расширена до максимально возможного количества '-'.

Лучше (ИМО):

$text='paul.douglas-steve-svr-z'

if($text.Split('-').Count -ge 3){

    $lastSymbolPosition = $text.LastIndexOf('-')
    $secondLastSymbilPosition = $text.Substring(0,$lastSymbolPosition).LastIndexOf('-')
    $prefix=$text.Substring($secondLastSymbilPosition,$text.Length-$secondLastSymbilPosition)

    $prefix

}else{

    'Out of the solution scope'

}

Хотя я не могу дать вам окончательный ответ, потому что не знаю цели этой обработки текста.

Надеюсь, это поможет.

0 голосов
/ 27 апреля 2018
get-aduser -identity john.dow-g -server 'domaincontroller.com' -properties *| 
    Foreach-object{ 
       $Array = ($_.split('-'))
       '-' + (($Array[1..($Array.count-1)]) -join '-')

    }

У вас будут проблемы с вашим примером.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...