逗号或空格后的PowerShell tr​​im姓氏

时间:2015-12-11 18:11:25

标签: powershell

我正在使用Get-ADUser,但请求的输出很棘手。我正在尝试修剪一个有*,M。D.或*,Jr的姓,但Select不起作用。另外,我看到一个姓氏是Smith Jr的情况,并且请求是删除“space Jr”,所以只剩下Smith。不知道如何轻松容纳所有这些。 THX。

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}

1 个答案:

答案 0 :(得分: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}
}

在您的原始代码中,您正在寻找空白并将其替换为空白;你不是说要对其他角色做任何事情,所以他们仍然存在。

在更新的代码中,我选择了所有内容,但是在空格之前捕获所有内容,然后用我捕获的内容替换所有内容。