Exchange Powershell,为SamAccountname导出过滤零件字符串

时间:2018-08-17 14:30:31

标签: powershell pipe exchange-server

我正在使用Exchange 2010并尝试运行PowerShell来导出具有用户邮箱的所有用户,我正在使用下面的PowerShell

Promise.all([counts, monthly, testeAt, atendData, testeEa, testeAtM]).then(([counts, monthly, testeAt, atendData, testeEa, testeAtM]) => {
            const statusData = counts[0];
            const monthlyData = monthly[0];
            const atData = testeAt[0];
            const dataAtend = atendData[0];
            const dataEa = testeEa[0];
            const atendAtM = testeAtM[0];

            // console.log(testeAtM.length);

            const data = {
                ...statusData, ...monthlyData, ...atData, ...dataAtend, ...dataEa, ...atendAtM,
                user: req.user
            };
            console.log(JSON.stringify(data, null, 4));

但是,在创建用户邮箱时我们的环境并不一致,当我浏览上面导出的文件时,有一些共享邮箱显示为用户邮箱。

有没有一种方法可以在PowerShell命令中添加过滤器,属性或管道,以便仅“用户”字段可以提取数字值而非alpha值的数据?

这是因为我知道用户邮箱将仅以数字作为其SamAccountname示例Get-Mailbox -resultsize unlimited -recipienttypedetails UserMailbox | Get-MailboxPermission | export-csv c:\User_mailbox.csv -NoTypeInformation ,而不会是11368

谢谢

1 个答案:

答案 0 :(得分:0)

我认为您可能需要显式过滤掉共享邮箱:

Get-Mailbox -resultsize Unlimited -RecipientTypeDetails UserMailbox | 
    Where-Object { @($_.RecipientTypeDetails) -notcontains 'SharedMailbox' } | 
    Get-MailboxPermission | 
    Export-Csv c:\User_mailbox.csv -NoTypeInformation

在您的情况下,也许-Filter也会更精确:

Get-Mailbox -ResultSize Unlimited -Filter "RecipientTypeDetails -eq 'UserMailbox'" 

修改

要也将SamAccountName过滤为数字,您可以执行以下操作( unested ):

Get-Mailbox -resultsize Unlimited -RecipientTypeDetails UserMailbox | 
    Where-Object { @($_.RecipientTypeDetails) -notcontains 'SharedMailbox' -and $_.SamAccountName -match '^\d+$'} | 
    Get-MailboxPermission | 
    Export-Csv c:\User_mailbox.csv -NoTypeInformation

或使用-Filter

Get-Mailbox -ResultSize Unlimited -Filter {(RecipientTypeDetails -eq 'UserMailbox') -and (SamAccountName -match '^\d+$')}