2015-12-11 1 views
2

Я использую Get-ADUser, но запрошенный результат сложный. Я пытаюсь обрезать фамилию, которая имеет *, M. D. или *, Jr., но Select не работает. Кроме того, я увидел случай, когда фамилия была Smith Jr, и запрос должен удалить «space Jr», поэтому остается только Smith. Не знаете, как легко разместить все это. Спасибо.PowerShell подстроить фамилию после запятой или пробелом

ForEach ($User in $Users) { 

$LN = $User.Surname 
$LN1 = $LN -replace '\s','' 

Select mail,telephonenumber,givenname,@{Name='surname';Expression={$LN1}} | ConvertTo-Csv -Delimiter "|" | Select-Object -Skip 2 | Out-File "C:\Scripts\Maintenace Connection\output-test1_$((Get-Date).ToString('MM-dd-yyyy')).txt" -Append} 

ответ

3

Предполагая, что фамилию не может содержать запятую или символ пробела (не всегда верно с реальными данными):

"Smith, Jr" -replace '(.*?)([,\s].*)','$1' 

С код:

ForEach ($User in $Users) { 
    $LN = $User.Surname 
    $LN1 = $LN -replace '(.*?)([,\s].*)','$1' 
    $User | Select mail, telephonenumber, givenname, @{Name='surname';Expression={$LN1}} | ConvertTo-Csv -Delimiter "|" | Select-Object -Skip 2 | Out-File ("C:\Scripts\Maintenace Connection\output-test1_{0:MM-dd-yyyy}')).txt" -f (Get-Date)) -Append} 
} 

В исходном коде вы ищете пробелы и заменяете их пробелами; вы не говорите ничего делать с другими персонажами, поэтому они остаются.

В обновленном коде я выбираю все, но захватываю все перед пространством, а затем заменяю все это на то, что я захватил.

+0

Отлично, но как получить его для вывода с использованием инструкции Select и формата вывода? @ {} Не работает. Thx – MarcGel

+0

С вашим предложением выбора, я думаю, вы просто ничего не пишете; поэтому он не знал бы, какой объект забрать почту, телефонный номер и т. д .; это исправлено в моем ответе выше. Для выражения ('@ {Name = 'surname'; Expression = {$ LN1}}'); работает так, как ожидалось. – JohnLBevan

+0

пс. вы используете 'ConvertTo-Csv' и' Out-File'; вы можете использовать 'Export-Csv' вместо этого для того же эффекта с меньшим количеством кода. – JohnLBevan

Смежные вопросы