我正在使用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}
答案 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}
}
在您的原始代码中,您正在寻找空白并将其替换为空白;你不是说要对其他角色做任何事情,所以他们仍然存在。
在更新的代码中,我选择了所有内容,但是在空格之前捕获所有内容,然后用我捕获的内容替换所有内容。