需要一些帮助来修复PowerShell格式化列导出结果以删除SMTP:&;smtp:?

需要一些帮助来修复PowerShell格式化列导出结果以删除SMTP:&;smtp:?,powershell,active-directory,office365,exchange-server,scripting-language,Powershell,Active Directory,Office365,Exchange Server,Scripting Language,我想使用替换字符串操作来确保结果不包含SMTP:和SMTP:字符串 下面的脚本导出禁用的AD帐户列表及其相应的Exchange邮箱详细信息: $filter = '(Enabled -eq $false) -and (homeMDB -ne "$null")' $properties = @('homeMDB', 'mailNickName', 'mail', 'DisplayName', 'SamAccountName', 'ProxyAddresses') $Allusers = (Get

我想使用替换字符串操作来确保结果不包含SMTP:和SMTP:字符串

下面的脚本导出禁用的AD帐户列表及其相应的Exchange邮箱详细信息:

$filter = '(Enabled -eq $false) -and (homeMDB -ne "$null")'
$properties = @('homeMDB', 'mailNickName', 'mail', 'DisplayName', 'SamAccountName', 'ProxyAddresses')

$Allusers = (Get-ADUser -Filter $filter -Properties $properties  |
             ForEach-Object {

                $MBSize = (Get-MailboxStatistics $_.SamAccountName).TotalItemSize.Value.ToMB()
                $MBLastLogonTime = (Get-MailboxStatistics $_.SamAccountName).LastLogonTime
                $MBLastLoggedOnUserAccount = ((Get-MailboxStatistics $_.SamAccountName).LastLoggedOnUserAccount)
                $MBDisconnectDate = ((Get-MailboxStatistics $_.SamAccountName).DisconnectDate)
                $MBSMTPAddresses = ($_.ProxyAddresses | Where-Object {$_ -like "*smtp:*" }).replace("smtp:","") -join ';'

                New-Object -TypeName PSObject -Property @{
                    DisplayName    = $_.DisplayName
                    mailNickName   = $_.mailNickName
                    SamAccountName = $_.SamAccountName
                    mail           = $_.mail
                    ProxyAddresses = $MBSMTPAddresses
                    homeMDB        = (($_.homeMDB).split(',')[0]).split('=')[1]
                    MBytes         = $MBSize
                    LastLogonTime  = $MBLastLogonTime
                    LastLoggedOnUserAccount = $MBLastLoggedOnUserAccount
                    DisconnectDate = $MBDisconnectDate
                }
            }) | Sort-Object MBytes -Descending | Export-Csv "C:\Result.csv" -NoTypeInformation
Export.CSVProxyAddresses列输出的问题是该列的内容如下:

SMTP:首先。Last@domain.com;第一。Last@domain2.com;Alias1@domain.com


请注意SMTP:email。user@domain.com仍在Result.CSV的ProxyAddresses列中,所有小写字母均不显示。

当您使用class方法
时,Replace()
区分大小写。因此,您必须将
.Replace('smtp:','')的条件更改为大写
。Replace('smtp:','')
或使用Powershell的
-Replace
运算符,该运算符不区分大小写

$MBSMTPAddresses = (($_.ProxyAddresses | Where-Object {$_ -like "*smtp:*" }) -replace 'smtp:') -join ';'

使用类方法
.Replace()
时,它区分大小写。因此,您必须将
.Replace('smtp:','')的条件更改为大写
。Replace('smtp:','')
或使用Powershell的
-Replace
运算符,该运算符不区分大小写

$MBSMTPAddresses = (($_.ProxyAddresses | Where-Object {$_ -like "*smtp:*" }) -replace 'smtp:') -join ';'

是的,非常有效,非常感谢基里尔的帮助。是的,非常有效,非常感谢基里尔的帮助。